有效關閉 Java ExecutorService
正確終止 Java 中的 ExecutorService 對於防止資源洩漏和維護系統穩定性至關重要。雖然 shutdownNow() 方法可能無法保證終止,但有一些建議方法可以確保高效關閉。
Oracle API 文件建議的首選方法涉及兩步驟過程:
1.啟動有序關閉:
呼叫pool.shutdown() 停用新任務的提交。這允許當前正在執行的任務完成,但不會接受新的任務。
2.等待終止或強制終止:
使用 pool.awaitTermination(60, TimeUnit.SECONDS) 等待任務完成。如果等待任務花費的時間太長,您可以延長逾時時間或使用帶有 while (!pool.awaitTermination(60, TimeUnit.SECONDS)) 的循環。如果在指定時間內未達到終止,則呼叫 pool.shutdownNow() 強制終止剩餘任務。
其他關閉方法:
shutdown( ): 啟動有序關閉,允許待處理的任務在停用新提交之前完成。
shutdownNow(): 嘗試立即停止所有任務,並返回未完成任務的清單。
awaitTermination(): 阻塞,直到所有任務完成、逾時或執行緒中斷。
以上是如何有效關閉Java ExecutorService,防止資源洩漏並保持穩定?的詳細內容。更多資訊請關注PHP中文網其他相關文章!