2012-03-21 55 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()。這可能是你需要的。

相關問題