在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服務器),你不會一次註冊它們,因爲你會被告知你可以在讀取任何東西之前寫入套接字,並且沒有任何東西寫,你會不斷收到通知。 –