selector.select()和selector.selectedKeys()

Posted RainDream

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,这个在第一个链接里也有原因

以上是关于selector.select()和selector.selectedKeys()的主要内容,如果未能解决你的问题,请参考以下文章

Selector#wakeup()

Java NIO- Selector 使用示例

python selenium select选择器

NIO学习

Select2 奇怪的下拉定位

Java NIO 篇