selector.select()和selector.selectedKeys()


当调用selector.select()时会阻塞:

This method performs a blocking selection operation. It returns only after at least one channel is 
 selected, this selector's wakeup method is invoked, or the current thread is interrupted, whichever 
 comes first. 

其返回值有可能为0:

The number of keys, possibly zero,
 whose ready-operation sets were updated

另请见,解释了select后返回值为0,但selector.selectedKeys()不为空:Java NIO Selector select() returns 0 although channels are ready

 

 

selector.selectedKeys()返回的Set<SelectionKey>需要删除SelectionKey,原因请见:Why the key should be removed in `selector.selectedKeys().iterator()` in java nio?

另外,Set<SelectionKey>删除SelectionKey需要使用iterator,这个在第一个链接里也有原因


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM