通過調用Thread.getAllStackTraces()可以很容易地從Java程序輸出線程轉儲。我有時在JSP中使用它來輕鬆診斷問題。但是通常你需要知道的另一個重要信息是線程擁有哪些鎖,以及阻塞的線程試圖獲取哪些鎖。有沒有辦法通過Java API獲取這些信息?我發現的唯一的事情是Thread.holdsLock,但是這隻對知道所有可能被鎖定的對象有幫助,並且不會告訴你阻塞的線程試圖獲取哪些鎖定。如何以編程方式查找所有線程持有的鎖
(當然你可以通過使用工具來創建一個threaddump此信息,但這種做法往往是不容易得到,如果系統是不是你自己的機器上。)
可能重複的[以編程方式確定哪個Java線程持有鎖](http://stackoverflow.com/questions/50561/programmatically-determine-which-java-thread-holds-a-lock) – 2012-03-21 10:38:33