l 一次web请求,进入tomcat
服务器处理请求的模式
1. 收到一个请求就处理,这个时候就不能处理新的请求,这种为阻塞 这个是单线程模型
2. 收到一个请求就新开一个线程去处理任务,主线程返回,继续处理下一个任务,解决了主线程阻塞的问题,有了一定程度的并发量
3. 类似2的模型,但是不是每次收到请求就开一个新的线程,而是使用线程池。这种方式实现的服务器性能会比2高。不过,它依然是阻塞的。线
4. 基于Java NIO实现的服务器模型,它是基于IO多路复用技术(例如Reactor模式)实现,只需要一个线程或者少量线程,就可以处理大量请求。从性能上来说NIO实现的服务器并发性一般大于BIO,所以可以实现高性能的服务器。如果感兴趣,可以学习一些基于NIO的网络编程框架,例如Netty、MINA。
https://segmentfault.com/q/1010000002998038/a-1020000002998730
注意:Tomcat运行可以选择BIO或者NIO模型,原理分别对应上面的3和4两种方式。Tomcat默认是BIO方式运行,如果想要换成NIO,可以配置server.xml:<Connector port="8080"protocol="org.apache.coyote.http11.Http11NioProtocol" .../>ÿ