[java] 쓰레드 풀의 작업 종료 처리 방법
쓰레드 풀은 여러 작업을 처리하는 데 사용되며, 작업 처리가 완료되면 안전하게 종료해야 합니다. 이를 효과적으로 처리하려면 쓰레드 풀을 종료할 때 대기 중이거나 실행 중인 작업을 완료하도록 구현해야 합니다. 아래에서는 쓰레드 풀의 종료 방법을 자세히 살펴보겠습니다.
1. 종료 플래그 사용
가장 간단한 방법은 종료 플래그를 사용하는 것입니다. 종료 플래그는 쓰레드 풀이 종료될 때 설정되는 플래그로, 이를 확인하여 쓰레드가 종료될 수 있도록 합니다.
public class CustomThreadPool {
private boolean isShutdown;
public void shutdown() {
isShutdown = true;
}
public void execute(Runnable task) {
if (!isShutdown) {
// 작업 실행
}
}
}
위의 예시에서 shutdown
메서드는 종료 플래그를 설정하고, execute
메서드는 작업을 처리하기 전에 종료 플래그를 확인하여 쓰레드 풀이 종료되었는지 확인하고 있습니다.
2. ExecutorService 활용
Java에서는 ExecutorService
를 통해 쓰레드 풀을 관리하고 작업을 처리할 수 있습니다. ExecutorService
의 shutdown
메서드를 호출하여 쓰레드 풀을 종료할 수 있습니다.
ExecutorService executor = Executors.newFixedThreadPool(5);
executor.submit(() -> {
// 작업 실행
});
executor.shutdown(); // 쓰레드 풀 종료
위의 예시에서 ExecutorService
의 shutdown
메서드를 호출하여 쓰레드 풀을 종료하고 있습니다.
결론
쓰레드 풀이 종료될 때 안전하게 종료하려면 종료 플래그나 ExecutorService
를 활용하는 것이 좋습니다. 종료 처리를 신중히 구현하여 쓰레드 풀을 안전하게 종료하고 메모리 누수나 예상치 못한 동작을 방지할 수 있습니다.