【发布时间】:2012-04-18 03:12:55
【问题描述】:
我正在研究 NioWorker.run() 方法并试图了解它是如何工作的。 下面是代码的简化版:
for(;;) {
try {
SelectorUtil.select(selector);
if (wakenUp.get()) {
selector.wakeup();
}
cancelledKeys = 0;
processRegisterTaskQueue();
processWriteTaskQueue();
processSelectedKeys(selector.selectedKeys());
} catch (Throwable t) {
}
}
更多 - 很清楚它的作用,但是我有一些问题:
1. Selector.select(selector) 以 500 毫秒超时执行选择。 为什么它不仅仅是一个阻塞调用?
2. 以下片段的目的是什么?为什么我们需要执行唤醒?
if (wakenUp.get()) {
selector.wakeup();
}
提前致谢
【问题讨论】:
标签: netty