在Java NIO使用Selector
的规范的方法是:NIO事件注册的顺序是否正确?
- REGIST的一个
ServerSocketChannel
与SelectionKey.OP_ACCEPT
事件类型。 - 调用
select
方法(它阻塞线程)在一个循环方法 - 然后当
OP_ACCEPT
事件发生,相对AcceptEventHandler
被调用以接受一个SocketChannel
- 然后与
SelectionKey.OP_READ
事件类型REGIST接受SocketChannel
。 - 当发生读取事件时,
ReadEventHandler
处理输入,然后用SelectionKey.OP_WRITE
事件类型注册SocketChannel
。
我的问题是,为什么不在开始时一次注册三种事件类型?序列是否有意义?
它取决于协议,但通常(图片HTTP服务器),你不会一次注册它们,因为你会被告知你可以在读取任何东西之前写入套接字,并且没有任何东西写,你会不断收到通知。 –