私は 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();
}
前もって感謝します