Thread.getAllStackTraces()を呼び出すことにより、Javaプログラムからスレッドダンプを簡単に出力できます。問題を簡単に診断するために、これをJSPで使用することがありました。しかし、多くの場合、調べる必要のあるもう1つの重要な情報は、スレッドによって保持されているロックと、ブロックされたスレッドが取得しようとしているロックです。Java APIを介してこの情報を取得する方法はありますか?私が見つけたのはThread.holdsLockだけですが、これは、ロックされている可能性のあるすべてのオブジェクトを知っている場合にのみ役立ち、ブロックされたスレッドが取得しようとしているロックを教えてくれません。
(もちろん、ツールを使用してスレッドダンプを作成することでこの情報を取得できますが、システムが自分のマシン上にない場合、このオプションは簡単に利用できないことがよくあります。)