본문 바로가기
카테고리 없음

스레드(Thread) 안전하게 종료 시키는법 (interrupt)

by kangs' tong 2023. 9. 14.

스레드(Thread) 안전하게 종료 시키는법 (interrupt)

스레드는 병렬로 실행되는 프로그램의 실행 흐름이며, 종료되는 시점은 주로 프로그램이 완료되거나 예외가 발생하는 경우입니다. 그러나 때로는 우리가 특정 시점에 스레드를 종료시키고 싶거나, 스레드가 무한 루프에 갇혀 있는 상황에서 빠져나오게 하고 싶을 수 있습니다. 이때 스레드의 안전한 종료를 위해 interrupt 메소드를 사용할 수 있습니다.

interrupt 메소드란?

interrupt 메소드는 스레드에게 종료 요청을 보내는 메소드입니다. 스레드는 현재 작업 중인 상태일 때 이 요청을 확인하고, 작업을 중지하고 종료할 수 있도록 설계해야 합니다. interrupt 메소드는 스레드가 실행 중인 작업을 바로 중지시키는 것은 아니지만, 종료에 필요한 요청을 전달해줌으로써 스레드가 이를 확인하고 종료하는 것을 가능하게 합니다.

interrupt 메소드 사용하기

스레드가 interrupt 되었는지 확인하기 위해서는 Thread.interrupted() 메소드를 사용할 수 있습니다. 이 메소드는 현재 스레드가 interrupt 되었을 경우 true를 반환하고, 그렇지 않은 경우 false를 반환합니다. 따라서 우리는 이 메소드를 주기적으로 체크하여 스레드의 종료 여부를 확인할 수 있습니다.

public class MyThread extends Thread {
    public void run() {
        while (!Thread.interrupted()) {
            // 스레드가 종료되지 않은 경우 실행되는 작업
        }
    }
}

위의 예제에서는 MyThread 클래스가 스레드를 상속받아 실행되는 작업을 정의하였습니다. run 메소드 내에서는 interrupt 메소드를 체크하여 스레드가 종료 요청을 받지 않았다면 계속해서 실행되는 작업을 수행하도록 합니다.

스레드를 종료시키기 위해 interrupt 메소드를 호출하는 방법은 다음과 같습니다.

Thread myThread = new MyThread();
myThread.start();

// 스레드 종료 요청
myThread.interrupt();

위의 예제에서는 MyThread 클래스로 생성한 myThread 인스턴스를 이용하여 스레드를 시작하고, 종료 요청을 보내는 것을 보여줍니다. interrupt 메소드를 호출하여 스레드를 종료시킬 수 있습니다.

마무리

이렇게 interrupt 메소드를 사용하여 스레드를 안전하게 종료시킬 수 있습니다. interrupt 메소드를 이용하면 스레드의 작업을 중지시키고 종료할 수 있으므로, 적절하게 사용하여 프로그램의 동작을 제어할 수 있습니다. 스레드의 안전한 종료를 위해 interrupt 메소드를 적재적소에 활용해보세요.

댓글