web-dev-qa-db-ja.com

スレッドがIntelliJでモニターを保持しているかどうかを確認する方法

IntelliJの作業中に、スレッドがロックを保持しているかどうかを確認できません。

Eclipse GUIには、スレッドに対してlockのようなアイコンがあり、そのlockを保持していることがわかります。

以下のコードスナップショットでは、私のスレッドはnotifyElementAdded()にあり、ロックを保持していますが、スレッドスタックにはそのようなアイコンやIntellijからの通知はありません

だから私の質問はIntelliJ GUIで同じことを確認する方法です。

enter image description here

8
Joker

これは、IntelliJがGUI製品にこれを含めるための潜在的な機能要求になる可能性があります。

プログラムでこれを確認するには、現在のスレッドが指定されたオブジェクトのモニターロックを保持している場合にのみtrueを返すJava.lang.Thread.holdsLock()メソッドを使用できます。

public static boolean holdsLock(Object obj)

参照用のrunメソッドのスニペットの下に、

public void run() {

   /* returns true if thread holds monitor lock */

   // returns false
   System.out.println("Holds Lock = " + Thread.holdsLock(this));  

   synchronized (this) {
      // returns true
      System.out.println("Holds Lock = " + Thread.holdsLock(this));
   }
 }
0
Vignesh T I