본문 바로가기

Programming/JAVA

멀티 스레드(6) - 스레드 상태 제어 2

 

 

 

앞서 스레드 상태를 제어하는 메서드에 대해서 전반적으로 리뷰해 보았습니다. 이번 아티클부터는 해당 메서드를 하나씩 살펴보도록 하겠습니다. 

 

 

 

멀티 스레드(6) - 스레드 상태 제어 1

[스레드 상태 제어]라는 용어의 개념이 무엇인지부터 쉽게 설명해 보겠습니다. 우리가 미디어 플레이어로 동영상을 재생을 하다보면, 영상을 정지했다가 다시 재생하기도 하고 영상 재생을 종

nozeroslope.tistory.com

 

 

 

 

○ 주어진 시간동안 일시 정지( sleep( ) )

 

기본적인 스레드 상태 제어 정적 메서드인 sleep( )입니다. Thread.sleep( ) 메서드를 호출한 스레드는 파라미터로 전달된 시간동안 일시 정지(TIME_WAITING) 상태가 되고, 다시 실행 대기 상태(RUNNABLE)로 돌아가게 됩니다.

 

여기서 우리는 앞서서 살펴보았던 메서드 중 이해가 잘 가지 않았던 interrupt( )의 사용도 함께 확인할 수 있습니다. 일시 정지 상태에서 주어진 시간이 되기 전에 interrupt( ) 메서드가 호출되면 InterruptedException이 발생합니다. 그래서, 예외 처리가 필요하게 됩니다. 

 

try {
	Thread.sleep(1000);
} catch(InterruptedException e) {
	// interrupt() 메서드 호출 시 실행
}

 

 

간단하게, 아래 예제에서 메인 스레드 상태 변경을 통해 3초 주기로 비프 음을 10회 발생하도록 해보겠습니다. 

import java.awt.Toolkit;

public class ExampleMain {
	public static void main(String[] args) {
		Toolkit toolkit = Toolkit.getDefaultToolkit();
		for(int i = 0; i < 10; i++) {
			toolkit.beep();
			try {
				Thread.sleep(3000);
			} catch(InterruptedException e) {
				
			}
		}
	}
}