繁体   English   中英

线程被禁用以进行线程调度。 这意味着什么?

[英]Thread becomes disabled for thread scheduling purposes. What does that mean?

当我通过Javadoc for CountDownLatch时,我在await方法的文档中遇到了一行。

如果当前计数大于零,则当前线程因线程调度而被禁用并处于休眠状态

current thread becomes disabled for thread scheduling purposescurrent thread becomes disabled for thread scheduling purposes含义是什么?

在给定的系统上,只有固定数量的线程可以同时实际执行(您受到机器中核心数量的限制。)当运行的线程多于核心时,线程调度程序将循环以某种方式通过线程,给每个CPU一点时间。

但是,在某些情况下,在CPU上给出一个线程时间是没有意义的。 例如,如果一个线程获得一个总计大于零的倒计时锁存器,则该线程被卡住,等待其他线程也获取该锁存器。 因此,让该线程有任何CPU时间没有任何意义,因为线程只是坐着等待其他线程。 因此,通常,调度程序甚至不会尝试为线程提供任何CPU时间,而是优先安排其他仍然可以取得进展的线程。 一旦有足够的线程获取倒计时锁存器,则以这种方式阻塞的所有线程将被放回调度程序以供进一步考虑。

换句话说,线程停止运行,并且调度程序将智能地不浪费时间尝试运行它直到锁存器准备就绪。

希望这可以帮助!

它只是意味着该线程中的代码将不再继续,直到从其他线程在同一锁存器上调用latch.countDown(),从而使锁存器计数为0。

线程在处于可运行状态时运行,并且调度程序对其进行调度。 当一个线程被禁用进行调度时,它将无法获得其cpu周期的份额,因此它不会运行,这意味着它的程序计数器不会增加。 它的堆栈会冻结,直到它再次获得cpu。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM