[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 공식 문서를 참고하세요.