SocketChannel.register()
和SelectionKey.interestOps()
之间的差异是什么?
在回显的NIO服务器in this SO question中,
对于每个被接受的密钥,都会为读操作调用一个寄存器。然后,一旦读取消息,就再次调用寄存器以进行写操作。但是,在编写消息后,不是注册另一个读操作,而是调用key.interestOps(SelectionKey.OP_READ)
。
为何与众不同?
答案 0 :(得分:3)
register()
将丢失或更改密钥附件,并可能完全返回新的SelectionKey
:未指定。在这种情况下使用interestOps()
。