[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
을 활용한 방법을 사용하여 안전하게 쓰레드를 중단시킬 수 있습니다.
참고 자료:
이상입니다. 부족한 부분이 있거나 추가로 알고 싶은 내용이 있다면 말씀해주세요.