NIO-Selector、SelectionKey介绍
介绍
selector(选择器)是java nio中的能够检测一到多个通道,并能够知晓通道是否为诸如读写事件做好准备的组件。这样一个单独的线程可以管理多个通道,从而管理多个网络连接。其实Selector是一个线程。
为什么使用Selector
为什么使用selector其实就是为什么用单个线程管理多个通道?仅用一个线程处理多个Channel就在于可以减少线程的数据。甚至可以只作用一个线程处理所有的channel。对于操作系统来说,线程间的上下文切换的开销很大,而且每个线程都要占用一定的资源,因此使用的线程越少越好。
提示
这里并没有考虑多核的情况下,在多核的情况下,不使用多任务可能是在浪费CPU的能力。