Callable을 사용하여 Java ExecutorService 작업의 예외 처리
Java ExecutorService 작업의 예외를 처리하려는 시도에서는 ThreadPoolExecutor를 하위 클래스로 분류하고 재정의하는 것이 일반적입니다. afterExecute 메소드입니다. 그러나 이 접근 방식이 항상 예상대로 작동하지 않을 수도 있습니다.
afterExecute를 재정의하는 대신 Callable 작업 활용을 고려해 보세요. Callable.call()을 사용하면 호출 스레드로 다시 전파될 수 있는 확인된 예외를 발생시킬 수 있습니다.
다음은 Callable을 사용하는 예입니다.
Callable task = ...; Future future = executor.submit(task); // Perform other tasks while the Callable executes try { future.get(); } catch (ExecutionException ex) { // Process the exception thrown by the Callable ex.getCause().printStackTrace(); }
Callable.call()이 예외를 발생시키는 경우 예외가 발생하면 ExecutionException으로 래핑되고 Future.get()에 의해 다시 발생됩니다. 이는 ThreadPoolExecutor 서브클래싱에 비해 더 강력한 예외 처리 메커니즘을 제공합니다.
또한 Callable을 사용하면 예외가 복구 가능한 경우 작업을 다시 제출할 수 있어 오류 처리에 더 큰 유연성이 제공됩니다.
위 내용은 Callable을 사용하여 ExecutorService 작업의 예외를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!