如何通过API查看哪个监视器正在等待?

时间:2011-05-17 12:29:21

标签: java multithreading junit monitor

我们有一个junit测试运行器,如果一个测试挂起,它会超时。现在我想通过API创建一个线程转储。

我知道我可以通过Thread.getAllStackTraces()请求堆栈跟踪。但是控制台上的线程转储包含更多信息,例如线程正在等待的监视器。

是否有API请求线程正在等待的监视器?

2 个答案:

答案 0 :(得分:3)

您可以使用JMX创建线程转储。

有关示例,请参阅How do I create a thread dump via JMX?ThreadInfo类支持获取锁定的监视器。

答案 1 :(得分:1)

JDK 6文档包含有关JVM MBean的编程监视的部分。 我从未使用它们,也无法为您提供示例代码,但它肯定会给您一个开始。

Managing and monitoring programmatic way

The Attach API to connect to a remote JVM

我希望它有所帮助,如果你可以分享你研究的结果,将会非常有帮助。