当我通过Javadoc for CountDownLatch时,我在await方法的文档中遇到了一行.
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,multithreading
来源: https://codeday.me/bug/20190725/1529809.html