반응형
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();
반응형
'자바(JAVA)' 카테고리의 다른 글
웹페이지에서 구글맵 구현 (0) | 2014.02.25 |
---|---|
Java 에서 Exception 의 내용을 추출하고 싶을 때 (1) | 2014.02.12 |
[Java] 자바 데이터베이스 연동, 오라클(Oracle), MySQL DB 연결 테스트 (0) | 2014.02.09 |
Java 에서 날짜 더하기 (0) | 2014.02.08 |
자바 Junit 기능중 타임 아웃 테스트 하기 (0) | 2013.10.27 |
Java 단위테스트 Junit 에서 Suite 로 클래스 집합 테스트 하기 (0) | 2013.10.26 |
Java 파일입출력의 다양한 방법들을 배워본다 (1) | 2012.09.28 |
자바 난수 발생 랜덤(Random) 클래스로 데이터를 추출하는 다양한 방법 (0) | 2012.09.26 |