wait(), notify(), notifyAll() 호출을 보고합니다.
잠금을 포함하지 않는 객체에서 이러한 메서드를 호출하면 IllegalMonitorStateException 예외가 발생합니다.
그러한 구문이 반드시 오류인 것은 아니지만, 포함하는 메서드가 호출되기 전에 필요한 잠금을 얻을 수 있으므로 살펴볼 필요가 있습니다.
예:
class Sync {
private final Object lock = new Object();
void test() throws InterruptedException {
synchronized (this) {
lock.wait(); // 'lock.wait()'가 'lock'에서 동기화되지 않습니다
}
}
}