问题:
关闭 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中文网其他相关文章!