728x90
InterruptedException
Java 에서 멀티스레딩을 다룰 때 발생할 수 있는 예외중 하나
스레드가 interrupted 되었을 때 발생하며, 스레드가 일시적으로 멈추거나 작업을 중단해야할 때 사용됨
InterruptedException 을 발생시키는 예외
public class InterruptExample {
public static void main(String[] args) {
Thread myThread = new Thread(() -> {
try {
for (int i = 0; i < 5; i++) {
System.out.println("Working " + i);
Thread.sleep(1000); // 스레드를 1초간 일시 정지
}
} catch (InterruptedException e) {
System.out.println("인터럽트로 작업이 중단되었습니다!");
}
});
myThread.start(); // 스레드 시작
// 메인 스레드에서 myThread를 3초 후 interrupt하여 작업을 중단
try {
Thread.sleep(3000);
myThread.interrupt(); // 스레드 interrupt
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
이 코드에서 myThread 는 5번의 작업을 수행하며 각 작업은 1초씩 일시 중지한다.
하지만 main 메서드에서는 myThread를 3초 후에 interrupt 하여 작업을 중단한다
이때, Thread.sleep(1000) 에서 InterreuptedException 이 발생하며 스레드는 중단되고 "인터럽트로 작업이 중단되었습니다!" 가 출력된다.
실제로는 스레드가 복잡한 작업을 수행할 때, interrupt() 를 통해 해당 스레드를 중단시키는 것이 일반적이다
( 스레드가 파일 작업이나 네트워크 통신 등을 수행 중인 경우, 이 예외를 처리하여 작업을 안전하게 중단하고 정리할 수 있다 )
728x90
'Java' 카테고리의 다른 글
Java | 참조(Reference) (0) | 2024.09.30 |
---|---|
Java | 자바의 메모리 구조 - Stack 영역과 Heap 영역 (2) | 2024.09.25 |
Java | 클래스와 객체의 차이? - 인스턴스 관점 (0) | 2023.11.13 |
Java | Java 에서 배열을 복사하는 메서드 (0) | 2023.09.15 |
Java | 문자열 변환 - parse() / valueOf() / toString() (0) | 2023.08.22 |