잠깐 () - 스레드는 이 모니터의 소유권을 해제하고 다른 스레드가 이 개체의 모니터에서 대기 중인 스레드에게 notify() 메서드 또는 notifyAll() 메서드 호출을 통해 깨우기를 알릴 때까지 기다립니다. 그런 다음 스레드는 모니터의 소유권을 다시 획득하고 실행을 재개할 수 있을 때까지 기다립니다.
수면 () - 이 메서드는 현재 실행 중인 스레드를 지정된 밀리초 동안 휴면(일시적으로 실행 중지)하도록 합니다. 스레드는 모니터의 소유권을 잃지 않습니다. 현재 스레드를 지정된 시간 동안 "Not Runnable" 상태로 보냅니다.
Sr. 아니요. | 키 | 대기 | 수면 |
---|---|---|---|
1 | 클래스 | Wait() 메서드는 Object 클래스에 속합니다. | Sleep() 메서드는 Thread 클래스에 속합니다. |
2 | 잠금 해제 | Wait()는 객체에 대한 잠금을 해제합니다. | 객체에 대한 잠금을 해제하지 않습니다. |
3 | 호출 컨텍스트 | Wait()는 객체 자체에서 호출될 수 있습니다. | Sleep()은 스레드에서 호출할 수 있습니다. |
4. | 기상 상태 | 객체에서 notify(), notifyAll()을 호출할 때까지 | 최소한 시간이 만료되거나 호출이 중단될 때까지 |
5 | 가짜 웨이크업 | 프로그램이 가짜 깨우기를 얻을 수 있음 | 가상 웨이크업을 하지 않습니다. |
SynchronizedMap의 예
synchronized(lockedObject){ while(condition == true){ lockedObject.wait() //releases lockedObject lock } Thread.sleep(100); //puts current thread on Sleep }