參考部落格:threadpoolexecutor(int corepoolsize, int maximumpoolsize, long keepalivetime,timeunit unit, blockingqueueworkqueue,rejectedexecutionhandler handler)
核心執行緒數, 最大執行緒數, 執行緒空閒存活時間(僅適用於超過核心執行緒數的執行緒), 時間單位, 阻塞佇列, 佇列已滿時的處理方式
rejectedexecutionhandler: abortpolicy, 丟擲異常(預設)
callerrunspolicy, 由呼叫執行緒處理該任務
discardpolicy, 丟棄新任務
discardoldestpolicy, 丟棄佇列頭的任務, 繼續處理新任務
prestartcorethread() 建立乙個空閒執行緒, 等待任務到達
prestartallcorethreads() 建立核心執行緒數量的空閒執行緒, 等待任務到達
執行緒池(executors 提供靜態方法建立執行緒池) :
newcachedthreadpool() 建立乙個執行緒池,根據需要建立新的執行緒,但在可用時將重用先前構建的執行緒
newfixedthreadpool(int nthreads) 建立乙個指定執行緒數的執行緒池
newscheduledthreadpool(int corepoolsize) 建立乙個指定執行緒數的執行緒池, 週期性的執行
newsinglethreadexecutor() 建立乙個單執行緒的執行緒池
newworkstealingpool(int parallelism) 建立乙個限定併發數的執行緒池 (jdk1.8新增)
executorservice 執行緒池管理部分api
isshutdown() executorservice已關閉
isterminated() 不呼叫shutdown()或shutdownnow(), 永遠為false, 關閉所有任務後為true
shutdown() 不再接受新的任務, 已提交的任務結束後, 則關閉executorservice
shutdownnow() 嘗試結束執行中的執行緒, 並跳過已提交但未執行的任務, 無法保證關閉正在執行的任務
execute(runnable) 執行實現runnable介面的任務, 無返回
submit(runnable) 執行實現runnable介面的任務,返回future物件, 任務結束future.get()為null
submit(callable) 執行實現callable介面的任務, 返回future物件, future.get() 獲取任務返回結果
invokeany(collection<? extends callable>) 執行實現callable介面的集合任務, 隨機返回乙個任務的執行結果
invokeall(collection<? extends callable>) 執行實現callable介面的集合任務, 返回所有任務的執行結果
scheduledexecutorservice 週期執行任務api
schedulewithfixeddelay(runnable command, long initialdelay, long delay, timeunit unit)
在initialdelay延遲後執行第乙個任務, 上乙個任務執行完畢後delay時間後, 再執行任務, 固定延遲
scheduleatfixedrate(runnable command, long initialdelay, long period, timeunit unit)
在initialdelay延遲後執行第乙個任務,任務執行時間》 period, 則任務完成立即執行, 否則, period時間後, 執行
執行緒池總結
執行緒池基本思想 是一種物件池的思想,開闢一塊記憶體空間,裡面存放了眾多 未死亡 的執行緒,池中線程執行排程 由池管理器來處理。當有執行緒任務時,從池中取一根,執行完後執行緒物件歸池,這樣可以避免反覆建立執行緒物件鎖帶來的效能開銷,節約系統資源。1 動態建立執行緒池 2 建立固定大小的執行緒池 3 ...
執行緒池總結
執行緒池 1.分類 規定執行緒 newfixedthreadpool 4 規定了執行緒的個數 單執行緒 newsinglethreadexecutor 和 new 的執行緒不同,當單執行緒遇到異常後,會建立新執行緒,並繼續執行,但 new 的執行緒就不會 快取執行緒 newcachedthreadp...
執行緒池實戰總結
1 怎麼優化執行緒池引數的 執行緒池 主要就是解決了 執行緒建立的問題,頻繁建立執行緒 會占用cpu資源 2 應用的業務場景 怎麼併發控制線程 第一步先挑執行緒池大小 核心執行緒大小 和 最大執行緒池大小 coresize maxsize 3 coresize 一般設定多大 coresize 一般2...