博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Tomcat NioEndPoint初探
阅读量:4213 次
发布时间:2019-05-26

本文共 1129 字,大约阅读时间需要 3 分钟。

startInternal():创建worker线程池,初始化Poller线程,根据可以用的处理器的数目,我的机器是双核超线程的,所以为4.

Poller是连接器的关键,不断地轮询分发连接,交给worker线程去处理。

// Create worker collection            if ( getExecutor() == null ) {                createExecutor();//如在server.xml,没有配置executor,则创建默认的连接池,poolSize为200            }            initializeConnectionLatch();                        // Start poller threads            pollers = new Poller[getPollerThreadCount()];            for (int i=0; i

 在Poller的run方法内有如下代码:

if ( !close ) {                            if (wakeupCounter.get()>0) {                                //if we are here, means we have other stuff to do                                //do a non blocking select                                keyCount = selector.selectNow();                            }else {                                keyCount = selector.keys().size();                                wakeupCounter.set(-1);                                keyCount = selector.select(selectorTimeout);//NIO关键,看注册的channel有没有事件发生                            }                            wakeupCounter.set(0);                        }
 后面就是分发给相应worker进行处理,小记以后完善

转载地址:http://bmdmi.baihongyu.com/

你可能感兴趣的文章
常用分类算法在不同样本下的选择
查看>>
python 使用 libsvm
查看>>
android 获取百度地图SDK遇见的问题(只显示网格,也就是调用失败)
查看>>
matplotlib 学习
查看>>
Linux Ubuntu 下改变 Mysql max_connections
查看>>
Android Studio 常用快捷键
查看>>
Android 导入项目遇到的问题
查看>>
Git 学习笔记
查看>>
[CSP]2017-12-3 Crontab
查看>>
Poj 3279 FlipTile
查看>>
Poj 3126 筛法 + bfs (spfa)
查看>>
POJ 3414 Pots 记录路径的搜索
查看>>
FZU 1250 BFS(两起点)
查看>>
UVA 11624 BFS + 技巧
查看>>
Wannafly挑战赛22---A 计算器
查看>>
牛客网 练习赛25 B最长区间
查看>>
最大不相邻元素和
查看>>
每次可以走k步的爬楼梯种类数
查看>>
k个Fibonacci数组成的数
查看>>
R型聚类分析
查看>>