작업 완료를 기다리는 ExecutorService
멀티 스레드 애플리케이션에서는 ExecutorService에 제출된 모든 작업이 완료될 때까지 기다려야 하는 경우가 많습니다. 진행하기 전에. 폴링이나 전역 작업 카운터를 지속적으로 확인하는 것과 같은 조잡한 기술이 존재하지만 더 효율적이고 우아한 솔루션을 사용할 수 있습니다.
waitTermination() 및 shutdown()
권장되는 접근 방식 ExecutorService의 waitTermination() 메서드를 사용하는 것이 포함됩니다. 시간 제한을 지정하거나 스레드가 완료될 때까지 무기한 기다릴 수 있습니다. 작동 방식은 다음과 같습니다.
// Create an ExecutorService instance ExecutorService taskExecutor = Executors.newFixedThreadPool(4); // Submit tasks as needed while(...) { taskExecutor.execute(new MyTask()); } // Shutdown the ExecutorService to prevent new tasks from being submitted taskExecutor.shutdown(); // Wait for threads to complete try { taskExecutor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS); } catch (InterruptedException e) { // Handle any interruptions }
이 메서드는 스레드가 완료되거나 시간 초과에 도달할 때까지 차단됩니다. 일부 작업이 완료되지 않은 경우에도 특정 시간 이후에 애플리케이션이 계속되도록 하려면 유한 시간 초과를 지정할 수도 있습니다.
위 내용은 ExecutorService 작업 완료를 효율적으로 기다리는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!