说过了服务器启动,最后来看一下请求处理过程, 服务器启动好后,处于待命状态,请求来了,请求处理过程由分两个建阶段:
-
请求连接建立过程 ( 以 NIO 为例 )
前面有提到,从线程池中固定分配了一个线程专门用于等待新连接,就是上图的监听线程,没有请求来时,该线程是阻塞在 accept () 方法上的,当新连接来建立连接时, accept 方法分配了一个 socket ,并将其设置为 nonblocking, 最后要做的就是将该 socket 丢给某个 Acceptor 线程 ( 基本上机会均等 ) 处理,然后立马返回继续处于接受状态,可以这个线程的工作是相当的简单的,效率那也是相当的高。
Acceptor