JAVANIOSelector如何掌握知识四要点?
- 内容介绍
- 文章标签
- 相关推荐
本文共计562个文字,预计阅读时间需要3分钟。
Selector选择器工作流程:我们想实现的soketchannel告诉selector后,我们就去可以+Selector选择器+Selector工作流程:我们想实现的soketchannel告诉selector后,我们就去可以做的不同事情。当有事件发生时,我们立即行动。
Selector选择器Selector工作流程我们把想要的soketchannel告诉selector后我们就去可以Selector选择器
Selector工作流程我们把想要的soketchannel告诉selector后我们就去可以做别的事情当有事件发生的时候selector会通知我们然后获取selectionkey获得我们感兴趣的事件。
selecotr是java nio多路复用的关键类selector实现了一个线程管理多个channel只需要更少的资源来处理更多的通道节省线程之间的开销这么说seletor是以前cpu很贵的时候现在很多公司的机器都是多核充分利用cpu才是最好的应用后期会写些JAVA NIO的最佳实践netty。
下面写几个简单的例子
Seletor的创建方式
1 Selector selector Selector.open();channel注册到seletor上
1 SelectionKey key channel.register(selector,Selectionkey.OP_READ);channel注册到Selector后会返回一个SelectionKey对象SelectionKey代表着这个channel和注册的
selector的关系SelectionKey维护着两个重要的属性interestOps和readyops。
Selector通常会监听四种类型的事件
-
connect
-
accept
-
read
-
write
这四种事件通常用Selectionkey对应的一些
-
SelectionKey.OP_CONNECT
-
SelectionKey.OP_ACCEPT
-
SELECTIONKEY.OP_READ
-
SELECTIONKEY.OP_WRITE
select()方法
1 2 3 int selectCount selector.select();阻塞到至少有一个再注册的通道上就绪了 selector.select(timeout);这个有超时时间 selector.selectNow();这个是到无论有没有都立马就返回了selectedKeys()方法
1 2 3 Set keys selector.selectedKeys(); //获取迭代器 Iterator keyIterator keys.iterator();获取我我们需要的监听的事件
本文共计562个文字,预计阅读时间需要3分钟。
Selector选择器工作流程:我们想实现的soketchannel告诉selector后,我们就去可以+Selector选择器+Selector工作流程:我们想实现的soketchannel告诉selector后,我们就去可以做的不同事情。当有事件发生时,我们立即行动。
Selector选择器Selector工作流程我们把想要的soketchannel告诉selector后我们就去可以Selector选择器
Selector工作流程我们把想要的soketchannel告诉selector后我们就去可以做别的事情当有事件发生的时候selector会通知我们然后获取selectionkey获得我们感兴趣的事件。
selecotr是java nio多路复用的关键类selector实现了一个线程管理多个channel只需要更少的资源来处理更多的通道节省线程之间的开销这么说seletor是以前cpu很贵的时候现在很多公司的机器都是多核充分利用cpu才是最好的应用后期会写些JAVA NIO的最佳实践netty。
下面写几个简单的例子
Seletor的创建方式
1 Selector selector Selector.open();channel注册到seletor上
1 SelectionKey key channel.register(selector,Selectionkey.OP_READ);channel注册到Selector后会返回一个SelectionKey对象SelectionKey代表着这个channel和注册的
selector的关系SelectionKey维护着两个重要的属性interestOps和readyops。
Selector通常会监听四种类型的事件
-
connect
-
accept
-
read
-
write
这四种事件通常用Selectionkey对应的一些
-
SelectionKey.OP_CONNECT
-
SelectionKey.OP_ACCEPT
-
SELECTIONKEY.OP_READ
-
SELECTIONKEY.OP_WRITE
select()方法
1 2 3 int selectCount selector.select();阻塞到至少有一个再注册的通道上就绪了 selector.select(timeout);这个有超时时间 selector.selectNow();这个是到无论有没有都立马就返回了selectedKeys()方法
1 2 3 Set keys selector.selectedKeys(); //获取迭代器 Iterator keyIterator keys.iterator();获取我我们需要的监听的事件

