Java_多執行緒(執行緒池)

執行緒池

我們在專案中往往會建立執行緒以方便使用,但如果在併發的執行緒數量多,並每個執行緒都執行一個時間很短的任務就結束時,就會頻繁的建立執行緒,這樣會降低系統的效率拖慢執行時間。在java中我們有更好的辦法來實現這樣的效果,就是執行緒池。

利用執行緒池的好處:

降低資源的消耗,透過重複利用已建立的執行緒降低執行緒建立和銷燬造成的銷燬。

提高響應速度,當任務到達時,任務可以不需要等執行緒建立就能立即執行。

提高執行緒的可管理性,執行緒是稀缺資源,如果無限制的建立,不僅會消耗系統資源,還會降低系統的穩定性,使用執行緒池可以進行統一的分配。

java透過EXecutors提供了四種執行緒池

newCachedThreadPool 建立一個可快取執行緒池,如果執行緒池長度超過處理需要,可靈活回收空閒執行緒,若無可回收,則建立新執行緒。

newFixedThreadPool建立一個定長執行緒池,可控制執行緒最大併發數,超出的執行緒會在佇列中等待。

newScheduledThreadPool建立一個定長執行緒池,支援定時及週期性任務執行。

newSingleThreadExecutor建立一個單程化的執行緒池,它只會用唯一的工作執行緒來執行任務,保證所有任務按照指定順序執行。

newCachedThreadPool

java程式碼

Java_多執行緒(執行緒池)

Java_多執行緒(執行緒池)

執行緒1

執行緒2

執行緒三

執行緒1

執行緒2

執行緒三

newFixedThreadPool

Java_多執行緒(執行緒池)

newScheduledThreadPool

Java_多執行緒(執行緒池)

結果延遲3秒執行。

newSingleThreadExecutor

Java_多執行緒(執行緒池)

結果一次輸出,相當於順序執行。

corePoolSize 核心池的大小,基本大小,即在沒有任務需要執行的時候執行緒池的大小

maximunPoolSize 執行緒池最大執行緒數 表示線上程池中最多能建立多少個執行緒。執行緒中當前執行緒數目不會超過這個值。

Java_多執行緒(執行緒池)

學習過程中遇到什麼問題或者想獲取學習資源的話,歡迎加入Java學習交流群346942462,我們一起學Java!