Tomcat 中的 NIO 源码分析
我们看到,这里又没有进行实际的处理,而是将这个 SocketChannel 注册到了其中一个 poller 上。因为我们知道,acceptor 应该尽可能的简单,只做 accept 的工作,简单处理下就往后面扔。acceptor 还得回到之前的循环去 accept 新的连接呢。 我们只需要明白,此时,往 poller 中注册了一个 NioChannel 实例,此实例包含客户端过来的 SocketChannel 和一个 SocketBufferHandler 实例。 Poller 之前我们看到 acceptor 将一个 NioChannel 实例 register 到了一个 poller 中。在看 register 方法之前,我们需要先对 poller 要有个简单的认识。 public class PollerimplementsRunnable{
publicPoller throws IOException { // 每个 poller 开启一个 Selector this.selector = Selector.open; } private Selector selector; // events 队列,此类的核心 private final SynchronizedQueue<PollerEvent> events = new SynchronizedQueue<>;
private volatile boolean close = false; private long nextExpiration = 0;//optimize expiration handling
// 这个值后面有用,记住它的初始值为 0 private AtomicLong wakeupCounter = new AtomicLong(0);
private volatile int keyCount = 0;
... } 敲重点:每个 poller 关联了一个 Selector。 Poller 内部围着一个 events 队列转,来看看其 events 方法: public boolean events { boolean result = false;
PollerEvent pe = ; (编辑:佛山站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 传台积电已将老练制程的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?那你就可以自暴