在
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...