1、shutdown()方法是安全的關閉執行緒池,呼叫shutdown方法後,不是立即關閉執行緒池,而是在執行緒池中執行很多任務,或等待佇列執行任務,等待所有任務完成後關閉執行緒池
2、isShutdown()方法可判斷執行緒池是否開始關閉,無法判斷是否完全關閉。
3、isterminated()方法可以判斷執行緒池是否完全關閉,因此呼叫shutdown後,執行任務時,呼叫isshutdown回傳true,呼叫isterminated回傳false。
awaittermination方法是判斷線程池是否完全關閉,與isterminated相似,但接受等待時間。呼叫該方法可能發生以下情況
(1)等待期間(包括進入等待狀態)線程池關閉,提交的任務(包括執行中和隊列中等待的)全部完成,相當於線程池結束,方法傳回true
(2)等待逾時後,最初的執行緒池沒有發生結束法回到false
(3)等待期間執行緒中斷,方法會拋出網路例外。
shutdownNow:立即關閉執行緒池,首先向執行緒池中的執行緒發送中斷訊號,嘗試中斷執行緒,然後將等待佇列的任務傳回呼叫人員,呼叫人員補救這些任務。
因此,我們可以根據自己的業務需求,選擇合適的方法停止執行緒池。例如,通常可以用shutdown()的方法關閉,完成提交的任務,但如果情況緊急,可以用shutdownnow方法加快線程池的結束速度。
以上是Java執行緒池如何關閉的詳細內容。更多資訊請關注PHP中文網其他相關文章!