SocketChannel.register()
和SelectionKey.interestOps()
之间有什么区别?
在echo NIO服务器中找到in this SO question,
对于每个接受的密钥,都会调用一个寄存器来进行读取操作。然后,一旦读取消息,便会再次调用该寄存器以进行写操作。但是,写一条消息后,它没有注册另一个读取操作,而是调用key.interestOps(SelectionKey.OP_READ)
。
为什么会有所不同?
最佳答案
register()
将丢失或更改键附件,并且可能会完全返回一个新的SelectionKey
:未指定。在这种情况下,请使用interestOps()
。