回覆列表
  • 1 # Java程式設計技術

    要把java執行緒池理解好並且用好,需要把併發程式設計的基礎知識掌握好,並且把執行緒池的所有API的官方文件仔細閱讀研究一遍。這裡把優雅的使用執行緒池的要點總結如下:

    1. 弄明白你要用執行緒池做什麼。例如你的目的是把同步API改造為非同步,還是想要併發請求多個外部服務,還是減少執行緒的建立和銷燬以處理使用者請求等。

    2. 根據你的實際專案需求,配置好執行緒池的引數,具體包括corePoolSize, maximumPoolSize, 阻塞佇列, keepAliveTime,執行緒工廠 和 飽和策略(或者說是RejectedExecutionHandler)。

    3. 根據你的應用特點部署執行緒池。有的後臺服務應用適合在啟動的時候一次性建立好執行緒池,在應用的執行過程不再修改執行緒池。有的時候,應用適合臨時建立一個執行緒池並且把任務提交進去,用完之後立即銷燬。

    4. 當你決定不再使用執行緒池之後,應該呼叫shutdown()以優雅的關閉執行緒池。shutdown可以保證之前已經提交到執行緒池中的任務不會被丟棄,保證了資料安全。

    5. 當呼叫了shutdown之後,執行緒池此時已經可能在執行任務,只是關閉了提交任務的入口。如果需要等待執行緒池完全終止,需要呼叫awaitTerminate以等待執行緒池把佇列中的任務全部處理完成並且清理完成,然後才返回。awaitTerminate成功返回了,執行緒池算是真的清理乾淨了。

  • 中秋節和大豐收的關聯?
  • 老公每天早晚都看老婆的手機他是什麼想法?什麼心理?