学习笔记-Selector类

来源:互联网 发布:加泰罗尼亚理工知乎 编辑:程序博客网 时间:2024/05/17 23:13

 一个Selector对象会包含三种类型的SelectionKey的集合。

 

1、all-keys集合 :当前所有向Selctor注册的SelectionKey的集合。Selector的keys()方法会返回此集合。

2、selected-keys集合 :相关事件已经被 Selector捕获的SelectionKey的集合。Selector的selectedKeys()方法返回此集合。

3、cancelled-keys集合:已经被取消的SelectionKey的集合。Selector没有提供访问此集合的方法。

 

SelectionKey类:

   ServerSocketChannel或者SocketChannel通过register()方法向Selector注册事件时,register()方法会创建一个SelectionKey对象,这个SelectionKey对象是用来跟踪注册事件的句柄。

  SelectionKey对象会失效的情况:

   (1) 程序调用SelectionKey的cancel()方法。

   (2) 关闭与SelectionKey关联的Channel。

   (3)与SelectionKey关联的Selector被关闭。

 

SelectionKey类定义了4种事件,分别用4个int类型的常量表示:

  SelectionKey.OP_ACCEPT:接收连接就绪事件。

  SelectionKey.OP_CONNECT,链接就绪事件。

  SelectionKey.OP_READ: 读就绪事件

  SelectionKey.OP_WRITE:写就绪事件。