울음참고 개발공부
Published 2023. 11. 13. 10:11
Java | InterruptedException 이란? Java
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
profile

울음참고 개발공부

@메각이

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!