Android 執行緒池

2021-07-30 09:54:28 字數 1462 閱讀 3298

threadpoolexecutor(int corepoolsize, int maximumpoolsize, long keepalivetime, timeunit unit

, blockingqueueworkqueue, threadfactory threadfactory)

corepoolsize:執行緒池中保活的執行緒數,即使它是空閒狀態。

maximumpoolsize:執行緒池中允許的最大的容量。

keepalivetime:執行緒保活的最大時間,當空閒的執行緒在keepalivetime時間之內還沒有收到新的非同步任務,那麼將被**。

unit:keepalivetime的單位

workqueue:非同步任務的訊息佇列

threadfactory:為執行緒池建立新的執行緒

例項化threadpoolexecutor的時候。設定最大的執行緒數是1。而且保活數也是1。說明該執行緒池的中只會開啟1個執行緒,並且該執行緒在空閒的時候也不會被**。

linkedblockingqueue:基於鏈結節點的可選限制的阻塞佇列。這個佇列排列元素fifo(先進先出)。

在**中可看到,保活的執行緒是零條。即當執行緒池的執行緒都是空閒狀態的時候,執行緒就會被系統會送。而之所以命名為cache,我想是因為保活時間是有60s的。

synchronousqueue:乙個阻塞佇列,其中每個插入操作必須等待另乙個執行緒相應的刪除操作,反之亦然

**中傳遞的nthreads,是最大的執行緒數也是最大的執行緒保活數。而所以fixed的特徵就是,執行緒池的所有執行緒都不會被系統**(即使是空閒狀態)。這樣子可以理解為single的高階版0-0

super呼叫的就是threadpoolexecutor的構造方法。從**上其返回的物件是scheduledthreadpoolexecutor,而從英文翻譯可理解為預約執行緒?並且執行緒對別用的也是delayed。

而需要執行執行緒池,只需要呼叫execute()方法就可以了。對於schedule執行緒池,使用scheduledexecutorservice類來指向執行緒池位址。從而呼叫scheduledexecutorservice.schedule();方法。

最後關閉就呼叫shutdown()咯。

參考資料:

Android執行緒池

executors jdk1.5之後的乙個新類,提供了一些靜態工廠,生成一些常用的執行緒池,threadpoolexecutor是executors類的底層實現 1.newsinglethreadexecutor 建立乙個單執行緒的執行緒池。這個執行緒池只有乙個執行緒在工作,也就是相當於單執行緒序列...

Android 執行緒池

適用於android的執行緒池 工具類 author yawei public class public executorservice diskio,executorservice networkio,executor mainthread,scheduledexecutorservice sch...

Android執行緒池詳解

最近在看okhttp的原始碼,看著看著就看到了有執行緒池的地方,以前自己對這個東西就也就感到雲裡霧裡的,所以 想把執行緒池的知識點和原始碼完整的看一篇 1.執行緒池有什麼用?a.重用執行緒池中存在的執行緒,避免因為執行緒的大量建立和銷毀所帶來的效能開銷 完成一項任務的時間t 建立線 2.thread...