線程池是如何啓動線程的

啃完小龍蝦掐指一算,週末又要結束了,趕緊來記錄並分享點東西… … … 日常工作中多多少少都會需要用多線程去處理一些事情,下面就來記錄並分享下線程池啓動線程相關的知識:

一、線程池的好處
合理利用線程池會帶來以下好處:
無限制的創建和銷燬線程不僅會消耗系統資源還會降低系統的穩定性,線程池減少了線程的創建和銷燬操作,從而可以提高一些性能。需要線程時,線程可立即執行,無需重新創建。

二、啓動策略
1)當線程池剛創建時,線程池內是無線程的狀態,任務隊列是以參數的形式傳入線程池的,線程池不會立即執行隊列中的任務。
2)線程池在啓動任務時會先做以下判斷:
a、如果正在運行的線程數量小於corePoolSize,則立馬創建相關任務。
b、如果正在運行的線程數量大於或等於corePoolSize,則將任務放入任務隊列等待。
c、如果隊列已滿,且正在運行的線程數量小於maximumPoolSize,則創建線程執行任務。
d、如果隊列已滿,且正在運行的線程數量大於或等於maximumPoolSize,則拋異常。
3)當一個線程完成任務後,會到隊列中取任務繼續執行。
4)當隊列爲空時,線程的存活時間超過keepAliveTime,如果當前運行的線程數大於corePoolSize則這個線程會被銷燬,故而線程池內所有的任務都完成後,線程的數量會縮到corePoolSize的大小。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章