SocketChannel.register()SelectionKey.interestOps()之间有什么区别?

在echo NIO服务器中找到in this SO question
对于每个接受的密钥,都会调用一个寄存器来进行读取操作。然后,一旦读取消息,便会再次调用该寄存器以进行写操作。但是,写一条消息后,它没有注册另一个读取操作,而是调用key.interestOps(SelectionKey.OP_READ)

为什么会有所不同?

最佳答案

register()将丢失或更改键附件,并且可能会完全返回一个新的SelectionKey:未指定。在这种情况下,请使用interestOps()

07-28 13:26