Android學習之自帶執行緒池詳解

2021-08-04 10:05:58 字數 1256 閱讀 3955

在 

android開發 中,如果我們要執行某個耗時任務,一般都會考慮開啟乙個執行緒去處理。

因為我們都知道乙個執行緒run 方法執行完畢後,才算真正結束,但是,這只是結束,並沒有被**,會一直閒置在那裡,等待 gc 去**,所以如果每執行乙個任務,我們都 new 乙個執行緒,那麼在某些極端的場景下,是比較消耗記憶體的。

本文 先簡單介紹下android 中自帶的四種執行緒池:

1  、 newcachedthreadpool

這種執行緒池比較靈活,也就是說它的池裡的執行緒數量並不是固定的,理論上可以無限大,任務不需要排隊,如果有空閒的執行緒,則復用,無則新建執行緒。

executorservice cachedthreadpool = executors.newcachedthreadpool();

cachedthreadpool.execute( 

new runnable()

});2 、 newfixedthreadpool

這個算是乙個中規中矩,也是android sdk 的原始碼中用的比較多的,它的池子裡的執行緒數有個最大值,可以自己設定,如果超過這個最大值,那麼任務就會加入任務佇列去等待。

executorservice fixedthreadpool = executors.newfixedthreadpool(5);

fixedthreadpool.execute( 

new runnable()

});3 、  newsinglethreadexecutor

如字面意思,這是乙個單例化的執行緒池,他只有乙個執行緒去執行任務。最常見的乙個例子就是我們的ui執行緒啦。它就是典型的單執行緒模型。

executorservice singlethreadexecutor = executors.newsinglethreadexecutor();

singlethreadexecutor.execute( 

new runnable()

});4 、 newscheduledthreadpool

這也是乙個定長的執行緒池,但是可以支援週期性的任務。

以下例子表示延遲一秒過後,每兩秒執行一次。

scheduledexecutorservice scheduledthreadpool = executors.newscheduledthreadpool(5);

scheduledthreadpool.scheduleatfixedrate( 

new runnable()

},1, 2, timeunit.seconds);

Android執行緒池

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

Android 執行緒池

threadpoolexecutor int corepoolsize,int maximumpoolsize,long keepalivetime,timeunit unit blockingqueueworkqueue,threadfactory threadfactory corepoolsi...

Android 執行緒池

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