socketChannel.register()和key.interestOps()之间的区别?

时间:2014-01-07 13:06:20

标签: java nio

SocketChannel.register()SelectionKey.interestOps()之间的差异是什么?

在回显的NIO服务器in this SO question中, 对于每个被接受的密钥,都会为读操作调用一个寄存器。然后,一旦读取消息,就再次调用寄存器以进行写操作。但是,在编写消息后,不是注册另一个读操作,而是调用key.interestOps(SelectionKey.OP_READ)

为何与众不同?

1 个答案:

答案 0 :(得分:3)

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