Please Enable JavaScript!
Gon[ Enable JavaScript ]

Java 실행대기함수 sleep 과 wait 에 대한 구현과 차이점

자바(JAVA)
반응형

Java 실행대기함수 sleep wait  대한 구현과 차이점

 

개발환경 : window 7 64bit, Eclipse Kepler, JDK 7.0

  

Java 에서 함수에 로직이 수행도중 잠시 멈추었다가 실행해야 될 경우가 있다.

프로그램은 스레드로 돌기 때문에 Thread 클래스 함수를 사용한다.

스레드를 대기 시켜주는 함수는 2가지가 있는데 wait(), sleep() 가 있다.

 

Wait() : 동기화된 다중스레드가 같은 오브젝트에 접근하고자 할 때 중지시킨다. .

활성화 할려면 notify(), notifyAll() 실행하면 된다.

 

Sleep() : 동기화된 다중스레드를 시간으로 중지시킨다.

Public static void sleep(long millis) : 파라미터로 천분의 1초를 받는다

 

두가지 내용에 대해 알기 쉽도록 예제를 구현하였다.

아래 예제에서 보는 것과 같이 Object 를 중지하는 것은 wait() 이고

While For 문처럼 반복할 때 시간을 통해 중지시키는 것은 sleep()

주로 사용한다.

 

// wait()
synchronized(HandObject) {
    while(isHandFree() == false) {
       HandObject.wait();
    }
}

// sleep() 
while (beerIsAvailable() == false) {
    Thread.sleep(5000);
}

// wait() 오브젝트를 깨운다.
HandObject.notifyAll();
반응형
Posted by 녹두장군1
,