tomcat线程模型源码初体验
常用的web服务器肯定不止tomcat,还有weblogic,jetty等,但是到目前为止,只用过tomcat服务器。简单总结一下收获。
tomcat支持四种线程模型
- BIO
同步阻塞式IO,就是传统的java.io,该模式下每个请求都会创建一个线程,性能开销大,不适合高并发场景,但是稳点,适合连接数目小且固定的架构。 - NIO
同步非阻塞IO(jdk1.4后),该模式基于多路复用选择器(selector)监测连接状态再通知线程处理,从而达到非阻塞的目的,能更好的支持并发,tomcat8.0之后默认采用。 - APR
全称是apache protable runtime,以jni的形式调用Apache HTTP服务器的核心动态链接库,需要安装APR库。(具体我也没用过) - AIO
异步非阻塞式IO,jdk1.7后之支持,不需要多路复用选择器,而是通过请求处理线程执行完后,回调通知继续执行后续操作。tomcat8.0后支持。
在tomcat中配置线程模型
在tomcat->conf中找到server.xml,打开找到下面配置。
这里默认就是BIO,BIO还有一种写法就是:protocol=“org.apache.coyote.http11.Http11Protocol“
NIO
protocol=”org.apache.coyote.http11.Http11NioProtocol“
AIO
protocol=”org.apache.coyote.http11.Http11Nio2Protocol“
APR
protocol=”org.apache.coyote.http11.Htt