Tomcat 中的 NIO 源码分析
// This means we got an OOM or similar creating a thread, or that // the pool and its queue are full getLog.error(sm.getString("endpoint.process.fail"), t); return false; } return true; }
NioEndpoint # createSocketProcessor
@Override protected SocketProcessorBase<NioChannel>createSocketProcessor( SocketWrapperBase<NioChannel> socketWrapper, SocketEvent event) { return new SocketProcessor(socketWrapper, event); }
我们看到,提交到 worker 线程池中的是 NioEndpoint.SocketProcessor 的实例,至于它的 run 方法之后的逻辑,我们就不再继续往里分析了。 总结 最后,再祭出文章开始的那张图来总结一下: 这里简单梳理下前面我们说的流程,帮大家回忆一下: 指定 Protocol,初始化相应的 Endpoint,我们分析的是 NioEndpoint; init 过程:在 NioEndpoint 中做 bind 操作; start 过程:启动 worker 线程池,启动 1 个 Acceptor 和 2 个 Poller,当然它们都是默认值,可配; Acceptor 获取到新的连接后,getPoller0 获取其中一个 Poller,然后 register 到 Poller 中; Poller 循环 selector.select(xxx),如果有通道 readable,那么在 processKey 中将其放到 worker 线程池中。 (编辑:佛山站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 传台积电已将老练制程的8英寸/12英寸晶圆报价提高逾10%
- 微软Windows 11全新任务管理器曝光!使用Fluent Design
- Linux 内核即将使用最新的 Zstd 实现
- MongoDB分片集群是啥?一文带你搞明白原理及搭建
- .net – Windows Phone 7 XNA GUI框架
- Papi酱遭罗辑思维撤资 什么样的创业者最容易“被分手”?
- CSS 实现高度自适应铺满整屏的实现
- 用于将Windows XP标准化应用程序推广到小型计算机实验室的简
- 服务器日志Tencent Virtual Printer Driver未知的问题解析
- 假如看完这篇文章后,你还不懂Service Mesh?那你就可以自暴