我试图找出为什么选择器不起作用。这是代码:
//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)应在注册期间创建一个新的 SelectionKey;
b)因此,一个键的“准备操作集”应该在选择期间更新,即这个方法应该返回1。
为什么它不能像我预期的那样工作?究竟是什么意思“谁的就绪操作集被更新”?