NIO 中的 Selector 是注册各种 I/O 事件的地方,比如注册连接事件,读数据事件,写数据事件等等。NIO 的异步就是靠 Selector 告诉我们发生了什么事件。
Selector 是一个事件注册对象,当有连接请求过来,读取数据,写入数据这些都有对应的事件,在使用 Selector 来操作数据的时候可以分三步:
Selector 响应的事件监听如下:
在 NIO 案例 教程中,我们讲解了 Selector 的使用方式。在监听过程中,我们会获取 Selector 中的 SelectionKey 集合,通过遍历该集合来判断有没有新的事物发生。
在传统的 BIO 模式当中,无论是请求读还是写,都是对流进行操作。每次客户端发起请求后都会一直等待,等待处理结果。而 NIO 中借助于 Selector 选择器,对感兴趣的事件进行监听。如果对应的感兴趣的事件发生,就会将相应的数据获取进行处理。