欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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();

获取关联的对象。

相关标签: Netty nio

上一篇: AIO与NIO和BIO

下一篇: JAVA NIO 之一