[英]Thread becomes disabled for thread scheduling purposes. What does that mean?
当我通过Javadoc for CountDownLatch时,我在await方法的文档中遇到了一行。
如果当前计数大于零,则当前线程因线程调度而被禁用并处于休眠状态
current thread becomes disabled for thread scheduling purposes
, current thread becomes disabled for thread scheduling purposes
含义是什么?
在给定的系统上,只有固定数量的线程可以同时实际执行(您受到机器中核心数量的限制。)当运行的线程多于核心时,线程调度程序将循环以某种方式通过线程,给每个CPU一点时间。
但是,在某些情况下,在CPU上给出一个线程时间是没有意义的。 例如,如果一个线程获得一个总计大于零的倒计时锁存器,则该线程被卡住,等待其他线程也获取该锁存器。 因此,让该线程有任何CPU时间没有任何意义,因为线程只是坐着等待其他线程。 因此,通常,调度程序甚至不会尝试为线程提供任何CPU时间,而是优先安排其他仍然可以取得进展的线程。 一旦有足够的线程获取倒计时锁存器,则以这种方式阻塞的所有线程将被放回调度程序以供进一步考虑。
换句话说,线程停止运行,并且调度程序将智能地不浪费时间尝试运行它直到锁存器准备就绪。
希望这可以帮助!
它只是意味着该线程中的代码将不再继续,直到从其他线程在同一锁存器上调用latch.countDown(),从而使锁存器计数为0。
线程在处于可运行状态时运行,并且调度程序对其进行调度。 当一个线程被禁用进行调度时,它将无法获得其cpu周期的份额,因此它不会运行,这意味着它的程序计数器不会增加。 它的堆栈会冻结,直到它再次获得cpu。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.