執行緒池
我們在專案中往往會建立執行緒以方便使用,但如果在併發的執行緒數量多,並每個執行緒都執行一個時間很短的任務就結束時,就會頻繁的建立執行緒,這樣會降低系統的效率拖慢執行時間。在java中我們有更好的辦法來實現這樣的效果,就是執行緒池。
利用執行緒池的好處:
降低資源的消耗,透過重複利用已建立的執行緒降低執行緒建立和銷燬造成的銷燬。
提高響應速度,當任務到達時,任務可以不需要等執行緒建立就能立即執行。
提高執行緒的可管理性,執行緒是稀缺資源,如果無限制的建立,不僅會消耗系統資源,還會降低系統的穩定性,使用執行緒池可以進行統一的分配。
java透過EXecutors提供了四種執行緒池
newCachedThreadPool 建立一個可快取執行緒池,如果執行緒池長度超過處理需要,可靈活回收空閒執行緒,若無可回收,則建立新執行緒。
newFixedThreadPool建立一個定長執行緒池,可控制執行緒最大併發數,超出的執行緒會在佇列中等待。
newScheduledThreadPool建立一個定長執行緒池,支援定時及週期性任務執行。
newSingleThreadExecutor建立一個單程化的執行緒池,它只會用唯一的工作執行緒來執行任務,保證所有任務按照指定順序執行。
newCachedThreadPool
java程式碼
執行緒1
執行緒2
執行緒三
執行緒1
執行緒2
執行緒三
newFixedThreadPool
newScheduledThreadPool
結果延遲3秒執行。
newSingleThreadExecutor
結果一次輸出,相當於順序執行。
corePoolSize 核心池的大小,基本大小,即在沒有任務需要執行的時候執行緒池的大小
maximunPoolSize 執行緒池最大執行緒數 表示線上程池中最多能建立多少個執行緒。執行緒中當前執行緒數目不會超過這個值。
學習過程中遇到什麼問題或者想獲取學習資源的話,歡迎加入Java學習交流群346942462,我們一起學Java!