一个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:写就绪事件。