tomcat accepter executor 流程原理
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Tomcat的Accepter-Executor流程原理如下:
Acceptor是一个独立线程,它不断地调用ServerSocketChannel的accept()方法来接收新的连接。
当有新的连接请求到来时,Acceptor会返回一个SocketChannel对象,并将其封装在一个PollerEvent对象中,然后将该对象压入Poller的队列中。
Poller也是一个独立运行的线程,底层就是一个Selector。
每个Poller线程可能同时被多个Acceptor线程调用来注册PollerEvent。
Poller不断地通过内部的Selector对象向内核查询Channel的状态,一旦可读就生成任务类SocketProcessor交给Executor去处理。
Executor负责处理SocketProcessor任务,执行与请求相关的操作,如解析请求、调用Servlet 容器处理请求、返回响应等。
以上就是Tomcat的Accepter-Executor流程原理。
需要注意的是,该流程是基于Java NIO(非阻塞IO)实现的,具有高性能、高并发的特点。