这篇保证你彻底搞懂Java NIO的Selector事件选择器 您所在的位置:网站首页 FileChannel需要关闭吗 这篇保证你彻底搞懂Java NIO的Selector事件选择器

这篇保证你彻底搞懂Java NIO的Selector事件选择器

2024-05-30 10:48| 来源: 网络整理| 查看: 265

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

C/C++许多年前就已经有 select()和 poll()这两个POSIX(可移植性操作系统接口)系统调用可供使用。许多os也提供相似的功能,但对Java 程序员来说,就绪选择功能直到 JDK 1.4 才成为可行方案。

简介

获取到SocketChannel后,直接包装成一个任务,提交给线程池。 引入Selector后, 需要将之前创建的一或多个可选择的Channel注册到Selector对象,一个键(SelectionKey)将会被返回。 SelectionKey 会记住你关心的Channel,也会追踪对应的Channel是否已就绪。

每个Channel在注册到Selector时,都有一个感兴趣的操作。

ServerSocketChannel 只会在选择器上注册一个,其感兴趣的操作只有ACCEPT,表示其只关心客户端的连接请求SocketChannel,通常会注册多个,因为一个server通常会接受到多个client的请求,就有对应数量的SocketChannel。SocketChannel感兴趣的操作是CONNECTREADWRITE,因为其要与server建立连接,也需要进行读、写数据。1 Selector1.1 APIopen打开一个 selector 新的selector是通过调用系统默认的SelectorProvider对象的openSelector方法而创建的。

注意到默认选择器提供者

Mac下的JDK,所以我们需要下载对应平台下的 JDK 哦!


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有