今天配置 Tomcat 启动脚本时,有一个功能要求 Tomcat 必须使用 bio 模式,顺手 Google 了一下,整理下 Tomcat 的 BIO、NIO、APR 三种运行模式.-潍坊IT培训负责整理
IO 基本模式
一次功能调用,从通信机制来看,有同步和异步.
同步:调用执行过程中没有返回值,结束后才有返回值.
异步:调用开始后直接返回,并且没有返回值,后面再通过其他方式通知调用者.
从调用者来看,等待调用结果有两种状态,阻塞和非阻塞.
阻塞:调用者一直等待调用的结果,阻塞调用者,调用有了结果才返回.
非阻塞:调用者发起调用后可以马上返回,不阻塞调用者.
举个简单的例子,早餐凉了要热一下早餐.隔壁老王用普通的锅加热早餐,需要一直看着,普通锅加热早餐是同步的,老王是阻塞的.隔壁老张把早餐放进微波炉加热,然后去看个电视,早餐热好以后微波炉"叮"一声通知老张,微波炉加热早餐是异步的,老张是非阻塞的.
Java 对 BIO NIO 和 AIO 的支持
BIO:同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理.适用连接数较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中.
NIO:同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理.适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂.
AIO:异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理.适用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂.
Tomcat IO 三种模式
BIO:Tomcat 使用 Java BIO 操作,是 Tomcat 的默认运行模式.
NIO:Tomcat 使用 Java NIO 操作.
APR:Tomcat 使用 Apache http 服务器支持库,调用 Apache http 服务器的核心动态链接库处理文件读取和网络操作,是高并发应用的首选.
以上就是潍坊IT培训给大家做的内容详解,更多关于IT的学习,请继续关注潍坊IT培训