Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 대기와 절전의 차이점

<시간/>

잠깐 () - 스레드는 이 모니터의 소유권을 해제하고 다른 스레드가 이 개체의 모니터에서 대기 중인 스레드에게 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
}