[java] 스레드 인터럽트(Thread Interrupt)와 스레드 중지

1. 스레드 인터럽트란?

스레드 인터럽트는 실행 중인 스레드를 다른 스레드로부터 중단시키는 기능입니다. 스레드가 실행 중인 상태에서 다른 스레드에서 interrupt() 메서드를 호출하면, 해당 스레드의 인터럽트 상태가 변경되고, 스레드는 인터럽트 예외가 발생합니다. 이를 통해 스레드를 안전하게 중지시킬 수 있습니다.

2. 스레드 중지 방법

스레드를 중지하는 방법은 여러 가지가 있습니다. 주로 스레드 인터럽트로 스레드를 중지하는 방법과 플래그를 사용하는 방법이 가장 일반적입니다.

2.1 스레드 인터럽트로 스레드 중지

스레드 인터럽트로 스레드를 중지하는 방법은 thread.interrupt() 메서드를 호출하는 방법입니다. 호출된 스레드는 인터럽트 상태를 확인하고 예외를 발생시킵니다. 스레드는 예외를 처리하도록 구현되어야 합니다.

public class MyThread extends Thread {
    public void run() {
        while (!Thread.currentThread().isInterrupted()) {
            // 스레드 실행 로직
        }
    }
}

2.2 플래그를 사용하여 스레드 중지

플래그를 사용하여 스레드를 중지하는 방법은 isStopped와 같은 boolean 변수를 사용하여 스레드의 실행 여부를 확인하여 중지하는 방법입니다. 이 방법은 스레드가 특정 조건을 만족할 때 중지되어야 하는 경우에 사용될 수 있습니다.

public class MyThread extends Thread {
    private volatile boolean isStopped;

    public void run() {
        while (!isStopped) {
            // 스레드 실행 로직
        }
    }

    public void stopThread() {
        isStopped = true;
    }
}

3. 스레드 중지의 주의사항

4. 참고 자료