我应该从SelectedSet中删除SelectionKey吗?

时间:2017-08-12 19:22:20

标签: java nio

我有一个关于从SocketChannel阅读的问题。假设我们有类似的东西:

SelectionKey key = //;
ByteBuffer b = ByteBuffer.allocateDirect(128);
SocketChannel ch = (SocketChannel) key.channel();
int bytesRead = ch.read(b); //returns 128

因此,在这种情况下,我无法确定是否所有 可用的 字节都从通道中读取(因为读取的字节数和缓冲区大小相同)。我需要从key删除SelectedSet吗?或者即使我删除,在下一个事件循环迭代中,我可以检索密钥并读取所有其余字节?

1 个答案:

答案 0 :(得分:1)

是。如果有更多数据要读取,OP_READ将再次触发。