앞서 스레드 상태를 제어하는 메서드에 대해서 전반적으로 리뷰해 보았습니다. 이번 아티클부터는 해당 메서드를 하나씩 살펴보도록 하겠습니다.
○ 주어진 시간동안 일시 정지( 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) {
}
}
}
}
'Programming > JAVA' 카테고리의 다른 글
멀티 스레드(6) - 스레드 상태 제어 4 (2) | 2024.11.28 |
---|---|
멀티 스레드(6) - 스레드 상태 제어 3 (0) | 2024.11.26 |
멀티 스레드(6) - 스레드 상태 제어 1 (0) | 2024.11.24 |
멀티 스레드(5) - 스레드 상태 2 (2) | 2024.11.20 |
멀티 스레드(5) - 스레드 상태 1 (0) | 2024.11.19 |