NIO - 如何让SelectionKey对NO opts感兴趣

时间:2013-06-10 16:26:17

标签: java selector nio

如何让java.nio.channels.SelectionKey对NO opts感兴趣?

SelectionKey#cancel()有可能但不太好,因为它使得密钥无用。

SelectionKeyinterestOps个常量; OP_ACCEPTOP_CONNECTOP_READOP_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)是合法的。 或者你能告诉我你的最佳做法吗?

1 个答案:

答案 0 :(得分:2)

  

我怀疑调用SelectionKey#interestOpts(0)

是合法的

为什么呢?它在Javadoc中的位置在哪里?

这完全合法。你已经回答了自己的问题。