选择器(Selector)是SelectableChannle 对象的多路复用器

2021-09-26 17:48:23 浏览数 (3)

选择器(Selector)是SelectableChannle 对象的多路复用器,Selector 可以同时监控多个SelectableChannel 的IO 状况,也就是说,利用Selector 可使一个单独的线程管理多个Channel。Selector 是非阻塞IO 的核心

选择器的创建

代码语言:javascript复制
// 创建一个选择器
Selector selector = Selector.open();

绑定选择器

通过调用通道的register方法可以绑定选择器,register方法有两个参数

  • Selector:即绑定哪个选择器
  • ops:监听事件类型。ops有4个值可以选择,为SelectionKey的静态属性
代码语言:javascript复制
// 让选择器监听一种状态
myChannel.register(selector, SelectionKey.OP_READ);
// 让选择器监听多种状态
myChannel.register(selector, SelectionKey.OP_READ | SelectionKey.OP_ACCEPT);

SelectionKey

表示SelectableChannel 和Selector 之间的注册关系。每次向选择器注册通道时就会选择一个事件(选择键)。选择键包含两个表示为整数值的操作集。操作集的每一位都表示该键的通道所支持的一类可选择操作。

0 人点赞