2012-03-21 62 views
1

通过调用Thread.getAllStackTraces()可以很容易地从Java程序输出线程转储。我有时在JSP中使用它来轻松诊断问题。但是通常你需要知道的另一个重要信息是线程拥有哪些锁,以及阻塞的线程试图获取哪些锁。有没有办法通过Java API获取这些信息?我发现的唯一的事情是Thread.holdsLock,但是这只对知道所有可能被锁定的对象有帮助,并且不会告诉你阻塞的线程试图获取哪些锁定。如何以编程方式查找所有线程持有的锁

(当然你可以通过使用工具来创建一个threaddump此信息,但这种做法往往是不容易得到,如果系统是不是你自己的机器上。)

+0

可能重复的[以编程方式确定哪个Java线程持有锁](http://stackoverflow.com/questions/50561/programmatically-determine-which-java-thread-holds-a-lock) – 2012-03-21 10:38:33

回答

1

我写了一个similar answer回溯,它使用管理扩展做类似的事情。

2

退房ThreadMXBean#getThreadInfo()。这可能是你需要的。

相关问题