专栏首页阿林前端开发攻城狮选择器(Selector)是SelectableChannle 对象的多路复用器
原创

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

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

选择器的创建

// 创建一个选择器
Selector selector = Selector.open();

绑定选择器

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

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

SelectionKey

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

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

关注作者,阅读全部精彩内容

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java NIO之选择器

    前面的文章说了缓冲区,说了通道,本文就来说说 NIO 中另一个重要的实现,即选择器 Selector。在更早的文章中,我简述了几种 IO 模型。如果大家看过之前...

    田小波
  • socket-io的底层实现设计原理

    上一篇文章 《漫谈socket-io的基本原理》 用了现实非常浅显的例子,尽可能地阐释非阻塞、阻塞、多线程、多路复用poll和 epoll 背后演进的整体思考脉...

    亦山
  • Java中的NIO基础知识

    上一篇介绍了五种NIO模型,本篇将介绍Java中的NIO类库,为学习netty做好铺垫

    Janti
  • Java NIO高性能网络编程(六)-Selector选择器

    Selector提供选择执行已经就绪的任务的能力,使得多元 I/O 成为可能,就绪选择和多元执行使得单线程能够有效率地同时管理多个 I/O channel。

    JavaEdge
  • Java IO与NIO

    七 Java NIO AsynchronousFileChannel异步文件通

    后端码匠
  • NIO学习四-Selector

    前面我们已经简单的学习了channel,知道channel作为通道,可以在通道中进行读写操作,同时知道ByteChannel是双向的。对于NIO的优势在于多路复...

    路行的亚洲
  • NIO之完成网络通信

      NIO被叫为 no-blocking io,其实是在网络这个层次中理解的,对于FileChannel来说一样是阻塞。对于网络通信是还有如下几个Channel

    用户4919348
  • 【死磕Netty】-----NIO基础详解

    原文出处http://cmsblogs.com/ 『chenssy』 转载请注明原创出处,谢谢! Netty 是基于Java NIO 封装的网络通讯框架,只有充...

    用户1655470
  • NIO基础详解

    Netty 是基于Java NIO 封装的网络通讯框架,只有充分理解了 Java NIO 才能理解好Netty的底层设计。Java NIO 由三个核心组件组件:

    好好学java
  • JavaScript中的链式调用

    链模式是一种链式调用的方式,准确来说不属于通常定义的设计模式范畴,但链式调用是一种非常有用的代码构建技巧。

    WindrunnerMax
  • JavaScript中的链式调用

    链模式是一种链式调用的方式,准确来说不属于通常定义的设计模式范畴,但链式调用是一种非常有用的代码构建技巧。

    WindrunnerMax
  • 爬虫选择器算法漫谈

    爬虫选择器其实就是CSS选择器,和前端开发关系密切,这里先简单介绍一下,让没做过web开发的有个大概了解。

    ACM算法日常
  • 4、web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签

    HtmlXPathSelector()创建标签选择器对象,参数接收response回调的html对象

    天降攻城狮
  • 手撕Netty-用Java NIO完成Netty Reactor思想,助你理解Netty模型事件驱动

    这是Netty官网上的一段介绍。我们主要关注它的可维护,高性能,高可伸缩性,使用Netty可以简化网络编程,并且性能优秀!

    行百里er
  • Python全栈之jQuery笔记

    py3study
  • BIO、NIO、AIO原理及总结

    同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销。

    用户5325874
  • 爬虫网页解析之css用法及实战爬取中国校花网

    我们都知道,爬虫获取页面的响应之后,最关键的就是如何从繁杂的网页中把我们需要的数据提取出来,

    Python编程与实战
  • Java NIO深入理解ServerSocketChannel

    JAVA NIO有两种解释:一种叫非阻塞IO(Non-blocking I/O),另一种也叫新的IO(New I/O),其实是同一个概念。它是一种同步非阻塞的I...

    用户1251985
  • BIO NIO AIO演变1 BIO2 NIO3 AIO4 常见面试题5 总结

    Block-IO 是一种阻塞同步的通信模式。 常说的Socket IO 一般指的是BIO。是一个比较传统的通信方式,模式简单,使用方便。但并发处理能力低,通信...

    JavaEdge

扫码关注云+社区

领取腾讯云代金券