Selector创建的语法
//创建Selector,管理多个channel
Selector selector = Selector.open();
Selector绑定 Channel 事件也称之为注册事件,绑定的事件 selector 才会关心。
Selector绑定 Channel 事件语法
channel.configureBlocking(false);
/**
* 3、建立Selector与channel的联系(也称为注册)
* key只关注事件,绑定的事件类型4种,
* connect - 客户端连接成功时触发;
* accept - 服务器端成功接受连接时触发;
* read - 数据可读入时触发;
* write - 数据可写出时触发,
* */
SelectionKey key = channel.register(selector, 绑定事件);
可以通过下面三种方法来监听是否有事件发生,方法的返回值代表有多少 channel 发生了事件。
方法1:阻塞直到绑定事件发生
int count = selector.select();
方法2:阻塞直到绑定事件发生,或是超时(时间单位为 ms)
int count = selector.select(long timeout);
方法3:不会阻塞,也就是不管有没有事件,立刻返回,自己根据返回值检查是否有事件
int count = selector.selectNow();