セレクターが機能しない理由を見つけようとしています。コードは次のとおりです。
//SocketChannel ch
//java.nio.channels.Selector impl
//Object session
SelectionKey sk = ch.register(impl, 0x01, session);
int i = impl.select();
System.out.println(i);
印刷される値はゼロです。これは、プログラム内の SocketChannel.register の唯一の呼び出しであるため、私が理解している限りでは、
a) 登録中に 1 つの新しい SelectionKey を作成する必要があります。
b) したがって、選択中に 1 つのキーの「ready-operation set」を更新する必要があります。つまり、このメソッドは 1 を返す必要があります。
期待どおりに動作しないのはなぜですか? 「誰の準備完了セットが更新されたか」とは正確にはどういう意味ですか?