질문:
Java를 종료할 때 실행 중인 작업이 종료되도록 어떻게 보장합니까? ExecutorService?
답변:
ExecutorService에 대한 Oracle API 문서에서는 다음 접근 방식을 권장합니다.
<code class="java">void shutdownAndAwaitTermination(ExecutorService pool) { pool.shutdown(); // Disable new tasks try { // Wait for existing tasks if (!pool.awaitTermination(60, TimeUnit.SECONDS)) { pool.shutdownNow(); // Cancel executing tasks if (!pool.awaitTermination(60, TimeUnit.SECONDS)) System.err.println("Pool did not terminate"); } } catch (InterruptedException ie) { pool.shutdownNow(); Thread.currentThread().interrupt(); } }</code>
종료 관련 방법:
강화된 종료 대기:
풀을 종료하는 데 시간이 더 걸리면 다음을 변경할 수 있습니다.
<code class="java">if (!pool.awaitTermination(60, TimeUnit.SECONDS))</code>
<code class="java">while (!pool.awaitTermination(60, TimeUnit.SECONDS))</code>
이 작업은 계속됩니다. 종료가 이루어질 때까지 무기한 대기합니다.
위 내용은 Java ExecutorService를 종료할 때 작업 종료를 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!