如何让java.nio.channels.SelectionKey
对NO opts感兴趣?
SelectionKey#cancel()
有可能但不太好,因为它使得密钥无用。
SelectionKey
有interestOps
个常量; OP_ACCEPT
,OP_CONNECT
,OP_READ
和OP_WRITE
,但不是OP_NOTHING
。
那么调用SelectionKey#interestOpts(**0**)
是合法的操作吗?
这是一个例子。
for(;;) {
selector.select();
for (Iterator<SelectionKey> it = selector.selectedKeys().iterator();
it.hasNext();) {
SelectionKey key = it.next(); it.remove();
key.interestOps(0); // interested in no opts.
// another thread handles socket...
worker.handle();
}
updateKeys(); // if the worker completes handling,
// other interestOpts are set...
}
到目前为止,此代码对我有用,但我怀疑调用SelectionKey#interestOpts(0)
是合法的。
或者你能告诉我你的最佳做法吗?
答案 0 :(得分:2)
我怀疑调用SelectionKey#interestOpts(0)
是合法的
为什么呢?它在Javadoc中的位置在哪里?
这完全合法。你已经回答了自己的问题。