问题描述
|
只是想知道当键集为0时Java中ѭ0的正常行为是什么,因为它本质上是没有意义的操作(没有可供选择的键)。即使键设置为0,操作也可能仍然发生。但是,在选择期间是否可以注册通道键,并在选择期间重新评估操作?
如果不是这种情况,那么没有键的选择操作肯定会花费无数的时间吗?在这种情况下,其他网络代码会怎样? :)也许只是确保密钥集永远不会为0的一种情况。但是我想知道,因为我已经编写了一个选择器,并且需要确保它与官方行为匹配。
解决方法
Selector
类是抽象的,实际操作取决于SelectorProvider
实际返回哪种Selector
实现。这些取决于操作系统。
如果实现使用Sun的sun.nio.ch.SelectorImpl
作为基类(它也是抽象的),则可以观察到select()
方法在调用抽象doSelect()
方法之前在公钥上同步。 “ 7”方法还可以在公共密钥上同步,因此,肯定有可能寄存器将不得不等待选择,并且选择将永远不会完成,因为没有进行任何注册。
不幸的是,所有都是抽象类,所以我们不能确定。我确实注意到Selector
文档描述了如何解开卡在select()
中的线程,因此大概它经常出现而值得记录,因此您不用担心。