負荷テストの不具合を解明するために必死に何かを試しているときに、Java 用のスレッド ダンプ分析ツールであるTDAに出会いました。どういうわけか、私はその出力に従っているとは感じません。たとえば、8 つのスレッドが BLOCKED であるモニター インスタンスがある場合、RUNNABLE 状態のスレッドが 1 つあるはずではありませんか? 他の 8 つのスレッドを BLOCKED 状態にするために、一部のスレッドがそのモニターのロックを取得する必要がありましたね。
次に、TDA 用語についてですが、「モニターでスリープしているスレッド (675 スレッドがスリープしている)」というカテゴリと、「スレッド ロック モニター (806 スレッド ロック)」というカテゴリがあります。これらのカテゴリには両方とも、WAITING、BLOCKED、または TIMED_WAITING のスレッドが含まれています。私が言える唯一の違いは、後者のカテゴリには RUNNABLE 状態のスレッドも含まれているということです。それらの間に他の違いはありますか?私が得られないのは、「モニターで寝ている」という構文です。
ありがとう!