对selector的理解

selector是怎样检查有没有就绪事件的?答:每个request会封装一个channel,将所有的channel注册在一个Selector上,然后selector开始不断的轮询每个request的可读状态,如果可读,则直接返回可读状态的channel

下面是select()方法:

int select()

int select(long timeout)

int selectNow()

select()阻塞到至少有一个通道在你注册的事件上就绪了。

select(long timeout)和select()一样,除了最长会阻塞timeout毫秒(参数)。

selectNow()不会阻塞,不管什么通道就绪都立刻返回(译者注:此方法执行非阻塞的选择操作。如果自从前一次选择操作后,没有通道变成可选择的,则此方法直接返回零。)。

select()方法返回的int值表示有多少通道已经就绪。亦即,自上次调用select()方法后有多少通道变成就绪状态。如果调用select()方法,因为有一个通道变成就绪状态,返回了1,若再次调用select()方法,如果另一个通道就绪了,它会再次返回1。如果对第一个就绪的channel没有做任何操作,现在就有两个就绪的通道,但在每次select()方法调用之间,只有一个通道就绪了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java I...
    JackChen1024阅读 12,253评论 1 143
  • 这两天了解了一下关于NIO方面的知识,网上关于这一块的介绍只是介绍了一下基本用法,没有系统的解释NIO与阻塞、非阻...
    Ruheng阅读 11,940评论 5 48
  • 参考:http://ifeve.com/selectors/原文地址 目录 Java NIO教程 Java NIO...
    步积阅读 10,009评论 3 10
  • 作者: 一字马胡 转载标志 【2017-11-24】 更新日志 一、Java OIO Java OIO (Jav...
    一字马胡阅读 5,193评论 0 12
  • 作为一个单身汉,我必须要为自己的后半生幸福负责,也应该为自己找个女朋友。虽说我有这样的心,可现实却是如此的无奈,至...
    龙航007阅读 1,742评论 0 2

友情链接更多精彩内容