2

是否可以取消注册,然后稍后使用相同的选择器再次注册?我必须限制我接受的连接数量并执行 key.cancel() 以停止接收 OP_ACCEPT 事件。

server.register(selector, SelectionKey.OP_ACCEPT);
...
key.cancel()
...

如果连接关闭,我无法再次运行 register(..),得到 java.nio.channels.CancelledKeyException

register(..) 的 Javadoc:如果此通道当前已使用给定选择器注册但相应的键已被取消,则抛出 CancelledKeyException

实现我想要做的事情的方法是什么?

4

1 回答 1

1

只需清除您要在密钥中清除的位interestOps:例如key.interestOps(0)

于 2013-07-31T19:04:04.797 回答