執行緒請求的處理邏輯:
當新任務提交過來時
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是乙個抽象類,我們需要建立子...