Android自帶的四種線程池使用總結(jié)
在Android開發(fā)中,如果我們要執(zhí)行某個耗時(shí)任務(wù),一般都會考慮開啟一個線程去處理。
因?yàn)槲覀兌贾酪粋€線程run方法執(zhí)行完畢后,才算真正結(jié)束,但是,這只是結(jié)束,并沒有被回收,會一直閑置在那里,等待GC去回收,所以如果每執(zhí)行一個任務(wù),我們都new一個線程,那么在某些極端的場景下,是比較消耗內(nèi)存的。
之前的內(nèi)存優(yōu)化的文章中,我講過關(guān)于android中的池的概念,也就是復(fù)用的機(jī)制,那么對于線程也有個線程池。
這篇文章先簡單介紹下Android中自帶的四種線程池:
1 、newCachedThreadPool
這種線程池比較靈活,也就是說它的池里的線程數(shù)量并不是固定的,理論上可以無限大,任務(wù)不需要排隊(duì),如果有空閑的線程,則復(fù)用,無則新建線程。
ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
cachedThreadPool.execute(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
}
});
2、newFixedThreadPool
這個算是一個中規(guī)中矩,也是Android sdk的源碼中用的比較多的,它的池子里的線程數(shù)有個最大值,可以自己設(shè)置,如果超過這個最大值,那么任務(wù)就會加入任務(wù)隊(duì)列去等待。
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(5);
fixedThreadPool.execute(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
}
});
3、 newSingleThreadExecutor
如字面意思,這是一個單例化的線程池,他只有一個線程去執(zhí)行任務(wù)。最常見的一個例子就是我們的UI線程啦。它就是典型的單線程模型。
ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
singleThreadExecutor.execute(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
}
});
4、newScheduledThreadPool
這也是一個定長的線程池,但是可以支持周期性的任務(wù)。
以下例子表示延遲一秒過后,每兩秒執(zhí)行一次。
ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5);
scheduledThreadPool.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
}
},1, 2, TimeUnit.SECONDS);
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android MaterialCardView的使用介紹與示例
MaterialCardView是一個基于Android支持庫中的CardView的可自定義組件。 MaterialCardView提供了CardView的所有功能,但增加了一些自定義屬性,使用起來更加方便實(shí)用2021-11-11
Android自定義View實(shí)現(xiàn)簡單水波紋效果
這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)簡單水波紋效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
實(shí)例講解Android中的AutoCompleteTextView自動補(bǔ)全組件
AutoCompleteTextView組件被用在輸入框中能實(shí)現(xiàn)輸入內(nèi)容自動補(bǔ)全的功能,類似于大家平時(shí)用Google時(shí)的輸入聯(lián)想,這里我們來用實(shí)例講解Android中的AutoCompleteTextView自動補(bǔ)全組件,特別是實(shí)現(xiàn)郵箱地址補(bǔ)全的例子,非常實(shí)用2016-05-05
Android開發(fā)四大組件之實(shí)現(xiàn)電話攔截和電話錄音
這篇文章給大家介紹Android開發(fā)四大組件之實(shí)現(xiàn)電話攔截和電話錄音,涉及到android四大基本組件在程序中的應(yīng)用,對android四大基本組件感興趣的朋友可以參考下本篇文章2015-10-10
Android Flutter實(shí)現(xiàn)點(diǎn)贊效果的示例代碼
點(diǎn)贊這個動作不得不說在社交、短視頻等App中實(shí)在是太常見了。本文將利用Flutter制作出一個點(diǎn)贊動畫效果,感興趣的小伙伴可以學(xué)習(xí)一下2022-04-04
Android控件ListView用法(讀取聯(lián)系人示例代碼)
本文以一個讀取聯(lián)系人的代碼為大家講解下Android控件中ListView的使用方法,這個listView有個setAdapter 適配器,里面可以直接實(shí)現(xiàn)接口,或者寫個類2013-06-06
Android?flutter?Dio鎖的巧妙實(shí)現(xiàn)方法示例
這篇文章主要為大家介紹了Android?flutter?Dio鎖的巧妙實(shí)現(xiàn)方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
基于barcodescanner實(shí)現(xiàn)Android二維碼掃描功能
這篇文章主要為大家詳細(xì)介紹了基于barcodescanner實(shí)現(xiàn)Android二維碼掃描功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
基于Android實(shí)現(xiàn)定時(shí)刷新功能
定時(shí)刷新是一種常見的應(yīng)用需求,例如自動加載新數(shù)據(jù)、定時(shí)更新 UI、動畫循環(huán)播放、實(shí)時(shí)監(jiān)控等場景中都需要定時(shí)刷新頁面,Android 平臺提供了多種實(shí)現(xiàn)定時(shí)刷新的方式,本文將結(jié)合實(shí)例詳細(xì)講解如何實(shí)現(xiàn)定時(shí)刷新功能,需要的朋友可以參考下2025-04-04

