0
点赞
收藏
分享

微信扫一扫

tomcat运行模式

我是小瘦子哟 2022-01-18 阅读 61

1、同步概念:

  • 同步﹔自己亲自出马持银行卡到银行取钱(使用同步l0时,Java自己处理l0读写)。
  • 异步:委托一小弟拿银行卡到银行取钱,然后给你(使用异步lo时,Java将lo读写委托给OS处理,需要将数据缓冲区地址和大小传给oS(银行卡和密码),oS需要支持异步lIo操作API)。
  • 阻塞 :ATM排队取款,你只能等待(使用阻塞lo时,Java调用会一直阻塞到读写完成才返回)。
  • 非阻塞:柜台取款,取个号,然后坐在椅子上做其它事,等号广播会通知你办理,没到号你就不能去,你可以不断问大堂经理排到了没有,大堂经理如果说还没到你就不能去(使用非阻塞lO时,如果不能读写Java调用会马上返回,当lo事件分发器会通知可读写时再继续进行读写,不断循环直到读写完成)。

2、Java对BIO、NIO、AIO的支持:

  • Java Blo :同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。
  • Java NlO :同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有\/o请求时才启动一个线程进行处理。
  • Java AIO(NIO.2):异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理。

3、BIO、NIO、AIO适用场景分析:

  • BIO:::BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理解,性能非常低下,没有经过任何优化处理和支持。
  • NIO:::Nio(new1/O),是java SE1.4及后续版本提供的一种新的l/o操作方式(即 java.nio.包及其子包)。Java ni。是一个基于缓冲区,并能提供非阻塞l/o操作的java APl,因此nio.也被看成是non-blocking l/o 的缩写。它拥有比传统I/o操作(bio)更好的并发运行性能。适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中。
  • APR:::安装起来最困难,但是从操作系统级别来解决异步的Io问题,大幅度的提高了性能
举报

相关推荐

0 条评论