gpt4 book ai didi

java - 出于线程调度目的,线程被禁用。这意味着什么?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:09:50 48 4
gpt4 key购买 nike

当我查看 CountDownLatch 的 Javadoc 时,我在文档中遇到了等待方法的一行。

If the current count is greater than zero then the current thread becomes disabled for thread scheduling purposes and lies dormant

此处当前线程因线程调度目的而被禁用是什么意思?

最佳答案

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

但是,在某些情况下,在 CPU 上给线程时间没有意义。例如,如果一个线程获取了一个总数大于零的倒计时锁存器,那么该线程就会卡住,等待其他线程也获取锁存器。因此,让该线程拥有任何 CPU 时间没有任何意义,因为该线程只是等待其他线程。因此,通常情况下,调度程序甚至不会尝试为线程提供任何 CPU 时间,而是宁愿调度其他仍能取得进展的线程。一旦有足够多的线程确实获得了倒计时锁存器,所有以这种方式被阻塞的线程就会被放回调度程序以供进一步考虑。

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

希望这对您有所帮助!

关于java - 出于线程调度目的,线程被禁用。这意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25729249/

48 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com