三javanio中Selector
三 java nio中Selector
为什么要使用selector
单线程,减少了线程切换带来的开销
创建selector
Selector.open()
如何通过selector来切换通道 ?
创建selector后,将通道绑定在selector上,也就是注册
channel.register(...) 表示对通道上的什么操作感兴趣channel.register(...) 表示对通道上的什么操作感兴趣
四种不同类型
- Connect
- Accept
- Read
- Write
SelectionKey.OP_ACCEPT;
SelectionKey.OP_CONNECT;
SelectionKey.OP_READ;
SelectionKey.OP_WRITE;
如果对多种操作感兴趣,可以用‘位或’将常量联系起来
SelectionKey.OP_READ|SelectionKey.OP_WRITE
SelectionKey是什么?
在register后返回一个对象类型就是SelectionKey,对象中包含的属性有:
- interest集合
可以确定对channel中哪些类型感兴趣
- ready集合
是通道已经准备就绪的操作集合
- Channel对象
selectionKey.channel();
- Selector对象
selectionKey.selector();
- 附加属性对象
register中第三个参数可以作为附加对象属性
Selector的方法
select()返回int值表示有多少通道已经就绪
以上是 三javanio中Selector 的全部内容, 来源链接: utcz.com/z/516819.html