1. 程式人生 > >java 常用執行緒池介紹

java 常用執行緒池介紹

一、執行緒池簡介

執行緒池就是預先建立好多n個空閒執行緒,節省了每次使用執行緒時都要去建立的時間,使用時只要從執行緒池中取出,用完之後再還給執行緒池。就像現在的共享經濟一樣,需要的時候只要去“借”,用完之後只需還回去就行。“池”的概念都是為了節省時間而建立的。

二、Executor

 Java SE5增加了juc包來簡化併發程式設計,而juc包中的Executor執行器來管理Thread物件。Executor在客戶端和任務執行之間提供了一個間接層,與客戶端直接執行任務不同,這個中介物件將執行任務。Executor允許我們管理非同步執行的任務,而無須顯示的管理執行緒的生命週期,是啟動執行緒的優先選擇。

1、newCachedThreadPool

newCachedThreadPool  會為每個任務都建立一個執行緒,如果有空閒執行緒的話也會重新使用空閒執行緒,如果執行緒沒有被使用的話會在60s之後終止並從執行緒池中移除。它在回收舊執行緒時會停止建立新執行緒。

2、newFixedThreadPool

newFixedThreadPool 建立了一個固定數量的執行緒池,它重用了固定數量的執行緒操作一個無界佇列,無論什麼時候,它最多隻能執行固定數量的執行中任務,當所有執行緒都處於活躍狀態,如果有新的任務要新增進來的話,只能在佇列中等待,直到有空閒執行緒。newFixedThreadPoll會一個執行,除非顯示的呼叫shutdown方法。

3、newSingleThreadExecutor

newSingleThreadExecutor 使用單個執行緒操作了一個無界佇列建立了一個Executor,它保證了任務執行的有序性。如果向newSingleThreadExecutor中提交多個任務的話,每個任務都會保證在下個任務開始之前結束,所有的任務都將使用相同的執行緒