gpt4 book ai didi

java - Java线程中的 "blocked Count"和 "Waited Count"是什么意思?

转载 作者:太空宇宙 更新时间:2023-11-04 14:03:39 24 4
gpt4 key购买 nike

我使用 JConsole 来观看线程,它显示

name: Thread-6
state:BLOCKED sun.misc.Launcher$AppClassLoader@19821f ,owner: Thread-3
blocked Count:199,645 Waited Count: 2,610

199,645 和 2,610:这是一件坏事吗?

最佳答案

如果您的应用程序运行时未满足您的要求,根据这些数字,这可能是因为存在大量锁争用。等待是指它等待通知(Object.wait()),但阻塞意味着它尝试获取锁但无法获取锁,因为另一个线程持有它。

来自http://geekexplains.blogspot.ca/2008/07/threadstate-in-java-blocked-vs-waiting.html

BLOCKED 状态和 WAITING/TIMED_WAITING 状态之间的区别?

当线程调用Object.wait方法时,它会释放所有获取的监视器并进入WAITING(如果我们调用wait方法的超时版本,则进入TIMED_WAITING)状态。现在,当线程通过同一对象上的notify()或notifyAll()调用通知时,线程的等待状态结束,并且线程开始尝试重新获得在等待调用时获取的所有监视器。一次可能有多个线程试图重新获得(或者可能是第一次获得)它们的监视器。如果多个线程尝试获取某一特定对象的监视器,则只有一个线程(由 JVM 调度程序选择)被授予该监视器,而所有其他线程将进入 BLOCKED 状态。

关于java - Java线程中的 "blocked Count"和 "Waited Count"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29072689/

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