English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java에서 Wait와 Sleep 간의 차이

Wait())-스레드는 이 모니터의 소유권을 해제하고, 다른 스레드가 객체의 모니터에 대기 중인 호출을 통해 알림을 기다립니다.notify()메서드 또는notifyAll()메서드가 깨운 스레드. 그런 다음, 스레드는 다시 모니터의 소유권을 얻을 수 있을 때까지 기다립니다.

Sleep())-현재 실행 중인 스레드가 지정된 밀리초 동안 잠들어 있도록 합니다. 이 스레드는 어떤 모니터의 소유권도 잃지 않습니다. 지정된 시간 동안 현재 스레드를 "실행할 수 없는" 상태로 보냅니다.

번호기다리기잠들기
1
클래스 
Wait() 메서드는 Object 클래스에 속합니다 
Sleep() 메서드는 Thread 클래스에 속합니다 
2
락 해제 
Wait()는 객체에 대한 락을 해제합니다 
그는 객체에 대한 락을 해제하지 않습니다 
3
호출 컨텍스트
객체 본체에서 Wait()를 호출할 수 있습니다 
스레드에서 Sleep()를 호출할 수 있습니다 
4。
깨우기 조건
까지 깨워줍니다notify()،notifyAll()객체에서
최소 시간이 만료되거나 통화가 끊기까지
5
거짓 깨우기 
프로그램이 거짓 깨우기를 할 수 있습니다 
거짓 깨우기가 발생하지 않습니다.

SynchronizedMap의 예제

synchronized(lockedObject){
   while(condition == true){
      lockedObject.wait() //lockedObject 락을 해제합니다
   }
   Thread.sleep(100); //현재 스레드를 잠재울 수 있습니다
}