Android自帶的四種線程池使用總結(jié)
在Android開發(fā)中,如果我們要執(zhí)行某個耗時任務(wù),一般都會考慮開啟一個線程去處理。
因為我們都知道一個線程run方法執(zhí)行完畢后,才算真正結(jié)束,但是,這只是結(jié)束,并沒有被回收,會一直閑置在那里,等待GC去回收,所以如果每執(zhí)行一個任務(wù),我們都new一個線程,那么在某些極端的場景下,是比較消耗內(nèi)存的。
之前的內(nèi)存優(yōu)化的文章中,我講過關(guān)于android中的池的概念,也就是復(fù)用的機制,那么對于線程也有個線程池。
這篇文章先簡單介紹下Android中自帶的四種線程池:
1 、newCachedThreadPool
這種線程池比較靈活,也就是說它的池里的線程數(shù)量并不是固定的,理論上可以無限大,任務(wù)不需要排隊,如果有空閑的線程,則復(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ù)隊列去等待。
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中封裝RecyclerView實現(xiàn)添加頭部和底部示例代碼
這篇文章主要給大家介紹了關(guān)于Android中封裝RecyclerView實現(xiàn)添加頭部和底部的相關(guān)資料,網(wǎng)上這方面的資料很多,但都不是自己需要的,索性自己寫一個分享出來供大家參考學(xué)習(xí),需要的朋友們下面隨著小編一起來學(xué)習(xí)學(xué)習(xí)吧。2017-08-08
Android開發(fā)案例手冊Application跳出dialog
這篇文章主要為大家介紹了Android開發(fā)案例手冊Application跳出dialog,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
Android利用CountDownTimer實現(xiàn)驗證碼倒計時效果實例
這篇文章主要給大家介紹了關(guān)于Android如何利用CountDownTimer實現(xiàn)驗證碼倒計時效果的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-10-10
Android學(xué)習(xí)筆記-保存文件(Saving Files)
這篇文章主要介紹了Android中保存文件(Saving Files)的方法,需要的朋友可以參考下2014-10-10
詳解Android中常見的內(nèi)存優(yōu)化及內(nèi)存泄露場景
本文主要給大家介紹了Android中常見的內(nèi)存優(yōu)化及Android開發(fā)中容易造成內(nèi)存泄露的場景,對我們的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-08-08
Android中用Builder模式自定義Dialog的方法
在任何軟件操作系統(tǒng)中,Dialog即對話框都是一種重要的交互模式與信息載體,而Android系統(tǒng)本身的Dialog擁有固定的樣式,并且在5.0后采用Material Design設(shè)計風(fēng)格的Dialog美觀大氣。這篇文章將詳細(xì)介紹Android中用Builder模式自定義Dialog的方法,有需要的可以參考借鑒。2016-10-10
Android 仿淘寶、京東商品詳情頁向上拖動查看圖文詳情控件DEMO詳解
本文給大家介紹android 仿淘寶、京東商品詳情頁向上拖動查看圖文詳情控件DEMO詳解,使用兩個scrollView,兩個scrollView 豎直排列,通過自定義viewGroup來控制兩個scrollView的豎直排列,以及滑動事件的處理。對android 拖動查看圖文詳情知識感興趣的朋友一起學(xué)習(xí)吧2016-09-09

