selectorObj.select()
方法状态的文档
此方法执行阻止
选择操作。仅返回
在至少一个频道之后
选中,此选择器的唤醒
方法被调用,或者当前
线程被中断,以任何一个为准
第一。
我了解文件
被select方法阻塞的线程不应该等待吗?当我运行探查器时,我看到线程处于运行模式,而不是等待状态。
尽管我接受这一点,但没有提到线程应该处于等待状态,但是我的假设是直到信号调度程序线程为注册到选择器的通道上的任何活动提供一些输入为止;该线程应处于等待状态。
请为我的假设为什么会错误提供一些帮助。
最佳答案
当线程在I / O调用中被阻止时,就Java线程而言,它仍在运行。
大多数探查器仅显示线程状态,即:
NEW尚未启动的线程处于此状态。
RUNNABLE在
Java虚拟机在此
州。
被阻塞的线程
等待显示器锁在这里
州。
等待正在等待的线程
无限期地为另一个线程
执行特定动作
这种状态。
TIMED_WAITING一个线程
等待另一个线程执行
最多指定动作
等待时间处于这种状态。
终止已退出的线程
处于这种状态。
如您所见,线程的WAITING / BLOCKED状态与I / O无关。