我们有一个junit测试运行器,如果一个测试挂起,它会超时。现在我想通过API创建一个线程转储。
我知道我可以通过Thread.getAllStackTraces()请求堆栈跟踪。但是控制台上的线程转储包含更多信息,例如线程正在等待的监视器。
是否有API请求线程正在等待的监视器?
答案 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
我希望它有所帮助,如果你可以分享你研究的结果,将会非常有帮助。