一、问题
(1)selector
是什么?
selector
选择器类是一种抽象,是一种对请求操作系统服务的抽象。
这个操作系统服务是哪个?
处理I/O
请求并通知,这也是操作系统中最重要的功能之一。
选择器是提供管理功能的对象,对注册到它这边的通道(channel
)执行就绪选择,并管理选择键(selectionKey
)
(2)selector
为什么需要?
selector
是Java的非阻塞I/O实现的关键。
提供了更好的资源管理:
- 使用较小的线程便可以处理许多连接,因此也减少了内存管理和上下文切换所带来开销;
- 但没有
I/O
操作需要处理的时候,线程也可以被用于其他任务
(3)selector
怎么用?
Selector selector = Selector.open();
ServerSocketChannel.open().register(selector, SelectionKey.OP_ACCEPT);
while(true){
int size=selector.select();//获取连接
}
二、参考资料
- http://ifeve.com/selectors/
- << Java NIO >>
- << Netty 实战 >>