概述
SelectionKey是java.nio.channels包下的一个类,主要用于绑定selector和chanel之间的关联(注册关系)。
SelectionKey定义了selector监控事件的四种类型:
public static final int OP_READ = 1 << 0; //1,数据读取完成触发的事件
public static final int OP_WRITE = 1 << 2; //4 数据写入完成触发的事件
public static final int OP_CONNECT = 1 << 3; //8 连接成功触发的事件
public static final int OP_ACCEPT = 1 << 4; // 16 有新客户端进来触发的事件,这个是ServerSocketChannel只支持的事件。
API:
public abstract Selector selector(); //返回创建这个SelectionKey的Selector。
//返回该SelectionKey是否有效,刚创建时有效,如果是cancel、绑定的通道关闭、或者创建他的选择器关闭了,他就无效。
public abstract boolean isValid();
//取消注册
public abstract void cancel();
//修改Selector监听该SelectionKey的事件类型。
public abstract SelectionKey interestOps(int ops);
//是否可读
public final boolean isReadable()
//是否可写
public final boolean isWritable()
//是否已连接
public final boolean isConnectable()
//是否有新客户端连接到来
public final boolean isAcceptable()
//返回当前触发的事件
public abstract int readyOps();
//获取附带的数据
public final Object attachment()
//设置附带的数据
public final Object attach(Object ob)