Netty架构 - nio基础 - SelectionKey
程序员文章站
2022-04-24 10:29:34
...
SelectionKey
表示SelectableChannel与Selector的注册关系。
SelectionKey selectionKey = selectableChannel.register(selector, SelectionKey.OP_ACCEPT);
`
SelectableChannel selectableChannel = selectionKey.channel();
获取关联的SelectableChannel。即使该SelectionKey被取消,也会返回。
·
Selector selector = selectionKey.selector();
获取关联的Selector。即使该SelectionKey被取消,也会返回。
·
boolean isValid = selectionKey.isValid();
判断该SelectionKey是否有效。除非该SelectionKey被取消、关联的Selector关闭、关联的SelectableChannel关闭,否则是一直有效。
·
selectionKey.cancel();
取消关联的SelectableChannel与Selector的注册关系。被取消后,该SelectionKey处于无效状态,被添加到Selector的cancelled-key集合。在下一次的select操作过程中会被删除。一旦该SelectionKey被取消,将永远处于无效状态。如果对已经取消的SelectionKey调用该方法,没有任何效果。
·
int interestOps = selectionKey.interestOps();
获取该SelectionKey感兴趣的事件集合。
只返回有效的SelectionKey的操作位。
·
SelectionKey selectionKey = selectionKey.interestOps(SelectionKey.OP_READ);
设置感兴趣的事件集合为特定值。
·
int readyOps = selectionKey.readyOps();
获取该SelectionKey就绪的事件集合。
只返回有效的SelectionKey的操作位。
·
boolean isReadable = selectionKey.isReadable();
boolean isWritable = selectionKey.isWritable();
boolean isConnectable = selectionKey.isConnetable();
boolean isAcceptable = selectionKey.isAcceptable();
判断是否可读、可写、可连接、可接收连接。
实际上是判断selectionKey.readyOps() & OP_READ != 0 …
`
Object attachment = selectionKey.attach(Object obj);
关联一个对象。
通过attach(null)取消关联。
·
Object attachment = selectionKey.attachment();
获取关联的对象。
上一篇: AIO与NIO和BIO
下一篇: JAVA NIO 之一