这篇保证你彻底搞懂Java NIO的Selector事件选择器 | 您所在的位置:网站首页 › FileChannel需要关闭吗 › 这篇保证你彻底搞懂Java NIO的Selector事件选择器 |
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感兴趣的操作是CONNECT、READ、WRITE,因为其要与server建立连接,也需要进行读、写数据。1 Selector1.1 APIopen打开一个 selector 新的selector是通过调用系统默认的SelectorProvider对象的openSelector方法而创建的。 注意到默认选择器提供者Mac下的JDK,所以我们需要下载对应平台下的 JDK 哦! |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |