[java] 쓰레드 풀의 작업 중단 처리 방법

쓰레드 풀은 많은 작업을 효율적으로 처리하기 위한 기법 중 하나입니다. 그러나 때때로 실행 중인 작업을 중단해야 하는 경우가 있습니다. 쓰레드 풀에서 작업을 중단하는 방법을 살펴보겠습니다.

작업 중단을 위한 플래그 활용

한 가지 일반적인 방법은 작업 중단을 위한 플래그(flag)를 활용하는 것입니다. 작업을 수행하는 쓰레드는 정기적으로 이 플래그를 확인하여 작업을 중단시켜야 하는지 판단합니다.

public class WorkerThread implements Runnable {
    private volatile boolean isInterrupted = false;

    public void run() {
        while (!isInterrupted) {
            // 작업 수행
        }
    }

    public void stop() {
        isInterrupted = true;
    }
}

위의 예시에서 volatile 키워드는 쓰레드 간의 가시성을 보장하기 위해 사용되었습니다.

InterruptedException을 활용한 방법

또 다른 방법은 InterruptedException을 활용하는 것입니다. 쓰레드가 작업을 수행하고 있는 중에 다른 쓰레드에서 해당 쓰레드의 interrupt() 메서드를 호출하면 InterruptedException이 발생하게 됩니다.

public class WorkerThread implements Runnable {
    public void run() {
        try {
            while (!Thread.currentThread().isInterrupted()) {
                // 작업 수행
            }
        } catch (InterruptedException ex) {
            // 쓰레드가 중단되었을 때의 처리
        }
    }
}

결론

쓰레드 풀에서 작업을 중단하는 방법에 대해 알아보았습니다. 작업 중단을 위한 플래그 활용과 InterruptedException을 활용한 방법을 사용하여 안전하게 쓰레드를 중단시킬 수 있습니다.

참고 자료:

이상입니다. 부족한 부분이 있거나 추가로 알고 싶은 내용이 있다면 말씀해주세요.