cachedthreadpool 可快取的執行緒池,如果執行緒池有空閒執行緒則復用空閒執行緒,如沒有空閒執行緒則建立執行緒;執行緒數沒有限制;執行緒執行超時則銷毀 ;引數部分看原始碼也很簡單
fixedthreadpool 有執行緒數量限制,如果執行緒數小於最大執行緒數,則無論有沒有空閒執行緒都會建立新執行緒,如果當前執行緒數已經到了限制,則復用空閒執行緒。
scheduledthreadpool 排程執行緒,有最大執行緒數限制,也可快取,可實現週期和延遲執行。
singlethreadpool 單一執行緒
ps:上面的fixedthreadpool和scheduledthreadpool是有核心執行緒數量設定的,也有最大執行緒數設定,當執行任務數量大於linkedblockingqueue容量的時候,才會去建立新的執行緒去執行任務。假如10個任務,linkedblockingqueue容量為3,核心執行緒數為2,那麼2個任務分配給核心執行緒,3個任務排在佇列,另外5個任務新起執行緒。
四種執行緒池
其他執行緒池 核心執行緒 執行緒池大小 佇列策略 newcachedthreadpool integer.max value synchronousqueue newfixedthreadpool 建立時可以設定引數 建立時可以設定引數 linkedblockingqueue newschedule...
四種執行緒池
threadpoolexecutor的引數 int coresize,核心執行緒 int maxsize,最大執行緒 long time,空閒執行緒超時時間,超時後銷毀 timeunit 空閒時間單位 blockingqueue taskqueue,存放任務的佇列,threadfactory thr...
四種常見執行緒池
int size 3 快取執行緒池,執行緒池的大小由jvm決定,如果有空閒執行緒會 executors.newcachedthreadpool 單執行緒執行緒池,可保證任務執行的順序就是任務提交的順序 executors.newsinglethreadexecutor 固定大小執行緒池 服務端推薦使...