1. wait() & notify()
- 스레드 라이프사이클을 제어할 수 있는 메소드
- Object에 정의되어 있음
- 동기화 블럭내에서만 사용할 수 있음
- 보다 효율적인 동기화를 가능하게 함
- 선별적인 통지는 불가능
2. wait() Method
-
동기화된 임계 영역의 코드를 수행하다가 작업을 더 이상 진행할 상황이 아니면, wait()을 호출하여 쓰레드가 락을 반납하고 기다리게 함
-
매개변수가 있는 wait()은 지정된 시간동안만 기다림. 즉, 지정된 시간이 지난 후에 자동적으로 notify()가 호출되는 것과 같음
3. notify() Method
- notify가 호출되면, 대기실에 있던 모든 쓰레드 중에서 임의의 쓰레드만 통지를 받음
- notifyAll()은 기다리고 있는 모든 스레드에게 통보를 하지만, 그래도 lock을 얻을 수 있는 것은 하나의 스레드일 뿐이고 나머지 스레드는 통보를 받긴 했지만, lock을 얻지 못하면 다시 lock을 기다리는 신세가 됨
java의 정석 ch13
https://www.baeldung.com/java-wait-notify