現在のスレッドが 2 つのロックを保持している間に発生する可能性のある wait() メソッドの呼び出しを報告します。

wait() の呼び出しではターゲットのロックが 1 つしか解放されないため、2 つのロックを保持した状態で待機した場合は容易にデッドロックが発生する可能性があります。

例:


  synchronized (lockA) {
    synchronized (lockB) {
      lockB.wait(); //警告
      //スレッド A はここで lockA を保持したまま停止します
    }
  }

  synchronized (lockA) { //スレッド B はブロックに入ってスレッド A を解放できません
    lockB.notify();
  }