퓨처 목록의 조기 종료 대기
퓨처로 대표되는 비동기 작업을 처리할 때 모든 처리가 완료될 때까지 기다리는 것이 중요한 경우가 많습니다. 완료되거나 오류가 발생합니다. 그러나 오류가 발생한 후에도 모든 작업이 완료될 때까지 불필요하게 기다리는 것은 바람직하지 않습니다.
이 문제를 해결하려면 다음 단계를 고려하세요.
활용 CompletionService:
순차적으로 미래 모니터링:
취소 남은 작업:
다음은 그 예입니다. 이 접근 방식을 보여줍니다.
<code class="java">Executor executor = Executors.newFixedThreadPool(4); CompletionService<SomeResult> completionService = new ExecutorCompletionService<SomeResult>(executor); // 4 tasks for(int i = 0; i < 4; i++) { completionService.submit(new Callable<SomeResult>() { public SomeResult call() { // Processing code return result; } }); } int received = 0; boolean errors = false; while(received < 4 && !errors) { Future<SomeResult> resultFuture = completionService.take(); // Blocks until available try { SomeResult result = resultFuture.get(); received ++; // Process the result } catch(Exception e) { // Log or handle the error errors = true; } if (errors) { // Cancel any remaining tasks executor.shutdown(); break; } }</code>
위 내용은 선물 작업 시 오류 및 조기 종료를 효율적으로 처리하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!