[java] 쓰레드 종료 방법(Thread Termination)

자바에서 쓰레드를 종료하는 방법에는 여러 가지가 있습니다. 여기서는 대표적인 방법 몇 가지를 살펴보겠습니다.

1. interrupt() 메소드를 이용한 종료

쓰레드는 interrupt() 메소드를 호출하여 종료할 수 있습니다. 이 메소드를 호출하면 쓰레드는 현재 실행 중이던 작업을 중단하고 InterruptedException을 발생시킵니다. 쓰레드 내부에서 이 예외를 적절히 처리하여 쓰레드를 종료할 수 있습니다.

예제:

public class MyThread extends Thread {
    public void run() {
        try {
            while (!Thread.currentThread().isInterrupted()) {
                // 쓰레드 동작
            }
        } catch (InterruptedException e) {
            // 쓰레드 종료 처리
        }
    }
}

2. volatile 플래그를 이용한 종료

volatile 키워드로 플래그를 선언하여 종료 조건을 설정하고, 쓰레드는 이 플래그를 확인하여 종료 여부를 판단할 수 있습니다.

예제:

public class MyThread extends Thread {
    private volatile boolean running = true;

    public void run() {
        while (running) {
            // 쓰레드 동작
        }
    }

    public void stopThread() {
        running = false;
    }
}

3. Thread 클래스의 stop() 메소드 (비권장)

Thread 클래스의 stop() 메소드를 호출하여 쓰레드를 강제로 종료할 수 있지만, 이 방법은 권장되지 않습니다. 이 메소드는 안전하지 않으며, 쓰레드가 자원을 올바르게 해제하지 못할 수 있습니다.

결론

쓰레드를 종료하는 방법에는 다양한 방법이 있지만, 안전하고 권장되는 방법은 interrupt() 메소드나 volatile 플래그를 활용하는 방법입니다.

쓰레드를 종료하는 방법은 애플리케이션의 요구사항과 상황에 따라 다를 수 있으므로, 상황에 맞게 적절한 방법을 선택하여 사용해야 합니다.

자세한 내용은 Oracle 공식 문서를 참고하세요.