執行緒池學習
ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
ThreadFactory threadFactory,
RejectedExecutionHandler handler)
先來看看建構函式的引數,解釋下:
- corePoolSize 除非設定allowCoreThreadTimeOut,否則就是保留在池中的執行緒數(即使它們是空閒的)
- maximumPoolSize 池中允許的最大執行緒數
- keepAliceTime 當執行緒數大於corePoolSize時,這是多餘的空閒執行緒在終止新任務之前等待新任務的最長時間。
- unit keepAliveTime引數的時間單位
- workQueue 用於在任務執行前儲存任務的佇列。這個佇列只包含execute方法提交的可執行任務。
- threadFactory 執行緒工廠
- handler 由於達到執行緒邊界和佇列容量而阻塞執行時使用的處理程式
1. 如果執行的執行緒小於corePoolSize,則嘗試用給定的命令作為第一個任務啟動一個新執行緒。
對addWorker的呼叫原子性地檢查runState和workerCount,因此可以通過返回false來防止錯誤警報,因為錯誤警報會在不應該新增執行緒的時候新增執行緒。
2. 如果一個任務可以成功排隊,那麼我們仍然需要再次檢查是否應該新增一個執行緒(因為自上次檢查以來已有的執行緒已經死亡),或者池在進入這個方法後關閉。
因此,我們重新檢查狀態,如果必要的話,如果停止,則回滾佇列;如果沒有,則啟動一個新執行緒。
3. 如果無法對任務排隊,則嘗試新增新執行緒。如果它失敗了,我們知道我們被關閉或飽和,所以拒絕任務。
相關文章
- 深入學習執行緒池原理執行緒
- 【java學習】ThreadPoolExecutor 執行緒池Javathread執行緒
- 手寫執行緒池,對照學習ThreadPoolExecutor執行緒池實現原理!執行緒thread
- Java多執行緒學習(八)執行緒池與Executor 框架Java執行緒框架
- 物聯網學習教程——執行緒池執行緒
- 手寫一個執行緒池,帶你學習ThreadPoolExecutor執行緒池實現原理執行緒thread
- Java執行緒池二:執行緒池原理Java執行緒
- 多執行緒【執行緒池】執行緒
- 執行緒和執行緒池執行緒
- 執行緒 執行緒池 Task執行緒
- 執行緒池相關複習執行緒
- 執行緒池執行緒
- java執行緒池趣味事:這不是執行緒池Java執行緒
- 執行緒池以及四種常見執行緒池執行緒
- java--執行緒池--建立執行緒池的幾種方式與執行緒池操作詳解Java執行緒
- 多執行緒之手撕執行緒池執行緒
- kuangshenshuo-多執行緒-執行緒池執行緒
- java多執行緒9:執行緒池Java執行緒
- 二. 執行緒管理之執行緒池執行緒
- Android多執行緒之執行緒池Android執行緒
- 執行緒池管理(1)-為什麼需要執行緒池執行緒
- C# 使用執行緒池佇列(學習筆記)C#執行緒佇列筆記
- Java執行緒池Java執行緒
- ThreadPool執行緒池thread執行緒
- 執行緒池 Executor執行緒
- Android執行緒池Android執行緒
- java 執行緒池Java執行緒
- 奈學:Executor執行緒池的概述執行緒
- 執行緒與執行緒池的那些事之執行緒池篇(萬字長文)執行緒
- SpringBoot執行緒池和Java執行緒池的實現原理Spring Boot執行緒Java
- 執行緒池之ScheduledThreadPoolExecutor執行緒池原始碼分析筆記執行緒thread原始碼筆記
- 執行緒池之ThreadPoolExecutor執行緒池原始碼分析筆記執行緒thread原始碼筆記
- 執行緒池建立執行緒的過程執行緒
- Java多執行緒-執行緒池的使用Java執行緒
- Java執行緒池一:執行緒基礎Java執行緒
- Android程式框架:執行緒與執行緒池Android框架執行緒
- 【Java】【多執行緒】執行緒池簡述Java執行緒
- Java併發程式設計學習筆記----執行緒池Java程式設計筆記執行緒