ThreadPoolExecutor原始碼分析

2021-09-12 04:29:39 字數 564 閱讀 6394

執行緒請求的處理邏輯:

當新任務提交過來時

1. 若正在執行的執行緒數量少於corepoolsize,就新建乙個執行緒來執行任務,即使其他的執行緒都是空閒狀態。 

2. 若corepoolsize和maximumpoolsize相同,則建立的執行緒池是大小固定的。

3. 當正在執行的執行緒數量超過corepoolsize而小於maximumpoolsize時,如果workqueue已滿,就新建乙個執行緒來執行任務,若workqueue未滿,就把這個任務放到workqueue中等待執行。

處理順序:

1. corepoolsize

2. workqueue

3. maximumpoolsize

即先達到corepoolsize的數量,再達到workqueue的數量,最後達到maximumpoolsize的數量,然後使用policy來處理其他任務請求。

corepoolsize;     

// 執行緒池維護執行緒的最小數量,哪怕是空閒的

maximumpoolsize;  

// 執行緒池維護的最大執行緒數量

Cartographer原始碼篇 原始碼分析 1

在安裝編譯cartographer 1.0.0的時候,我們可以看到 主要包括cartorgarpher ros cartographer ceres sover三個部分。其中,ceres solver用於非線性優化,求解最小二乘問題 cartographer ros為ros平台的封裝,獲取感測器資料...

AbstractListView原始碼分析3

normal list that does not indicate choices public static final int choice mode none 0 the list allows up to one choice public static final int choice ...

Android AsyncTask原始碼分析

android中只能在主線程中進行ui操作,如果是其它子執行緒,需要借助非同步訊息處理機制handler。除此之外,還有個非常方便的asynctask類,這個類內部封裝了handler和執行緒池。本文先簡要介紹asynctask的用法,然後分析具體實現。asynctask是乙個抽象類,我們需要建立子...