현재 스레드가 두 개의 잠금을 유지하는 동안 발생할 수 있는 wait() 메서드 호출을 보고합니다.

wait()를 호출하면 대상에서 하나의 잠금만 해제되므로 두 개의 잠금이 걸린 상태로 대기하면 교착상태가 발생하기 쉽습니다.

예:


  synchronized (lockA) {
    synchronized (lockB) {
      lockB.wait(); //경고
      // 스레드 A가 lockA를 보유하며 여기에서 정체되어 있습니다
    }
  }

  synchronized (lockA) { // 스레드 B가 블록에 들어가서 스레드 A를 해제할 수 없습니다
    lockB.notify();
  }