[java] 쓰레드 풀의 작업 중단 후 복구 방법

쓰레드 풀은 많은 작업을 처리하는 데 도움이 되는데, 종종 작업을 중단하고 다시 시작해야 할 때가 있습니다. 여기에서는 작업을 중단하고 복구하는 방법에 대해 알아보겠습니다.

1. 작업 중단

쓰레드 풀의 작업을 중단하기 위해서는 각 쓰레드에게 작업을 중단하도록 지시해야 합니다. ExecutorService 인터페이스를 사용하여 이를 수행할 수 있습니다. ExecutorService를 사용하여 작업을 제출하고 다음과 같이 작업을 중단할 수 있습니다.

ExecutorService executorService = Executors.newFixedThreadPool(5);

// 작업을 제출하고 Future 객체를 통해 결과를 받는다
Future<?> future = executorService.submit(() -> {
    // 작업 내용
});

// 작업을 중단시킨다
future.cancel(true);

위의 코드에서 future.cancel(true)를 호출하여 작업을 중단시킬 수 있습니다.

2. 작업 복구

작업을 중단한 후에는 복구할 수도 있습니다. submit 메서드로 제출한 작업의 결과를 받을 수 있는 Future 객체를 사용하여 작업을 다시 시작할 수 있습니다.

Future<Integer> future = executorService.submit(() -> {
    // 작업 내용
    return 결과;
});

try {
    Integer result = future.get();
    // 결과를 이용한 후속 작업
} catch (InterruptedException | ExecutionException e) {
    // 예외 처리
}

위의 코드에서 future.get()을 호출하여 작업의 결과를 얻을 수 있습니다.

이와 같이 ExecutorService를 사용하여 쓰레드 풀의 작업을 중단하고 복구하는 방법에 대해 알아보았습니다.

참고 자료