wait() 메서드 호출을 보고합니다.
wait()를 호출하면 대상에서 하나의 잠금만 해제되므로 두 개의 잠금이 걸린 상태로 대기하면 교착상태가 발생하기 쉽습니다.
예:
synchronized (lockA) {
synchronized (lockB) {
lockB.wait(); //경고
// 스레드 A가 lockA를 보유하며 여기에서 정체되어 있습니다
}
}
synchronized (lockA) { // 스레드 B가 블록에 들어가서 스레드 A를 해제할 수 없습니다
lockB.notify();
}