非常に奇妙なNIOの動作が発生します。ごくまれに、次のようにselect()を呼び出すと、切断時に(VMの強制終了のために)選択されたreadyKeyが取得されません。
while (selector.isOpen()){
selector.select(SELECT_TIMEOUT);
Set<SelectionKey> readyKeys = selector.selectedKeys();
if(!readyKeys.isEmpty()){
System.out.println("Selected...");
}
}
キーは次のように登録されます。
key.interestOps(SelectionKey.OP_READ);
OS:CentOS 6.2
VM:XEN
Java:JDK_1.6u17
Keep_ALIVEは1秒ごとに実行するように設定されています