Android自帶的四種線(xiàn)程池使用總結(jié)
在Android開(kāi)發(fā)中,如果我們要執(zhí)行某個(gè)耗時(shí)任務(wù),一般都會(huì)考慮開(kāi)啟一個(gè)線(xiàn)程去處理。
因?yàn)槲覀兌贾酪粋€(gè)線(xiàn)程run方法執(zhí)行完畢后,才算真正結(jié)束,但是,這只是結(jié)束,并沒(méi)有被回收,會(huì)一直閑置在那里,等待GC去回收,所以如果每執(zhí)行一個(gè)任務(wù),我們都new一個(gè)線(xiàn)程,那么在某些極端的場(chǎng)景下,是比較消耗內(nèi)存的。
之前的內(nèi)存優(yōu)化的文章中,我講過(guò)關(guān)于android中的池的概念,也就是復(fù)用的機(jī)制,那么對(duì)于線(xiàn)程也有個(gè)線(xiàn)程池。
這篇文章先簡(jiǎn)單介紹下Android中自帶的四種線(xiàn)程池:
1 、newCachedThreadPool
這種線(xiàn)程池比較靈活,也就是說(shuō)它的池里的線(xiàn)程數(shù)量并不是固定的,理論上可以無(wú)限大,任務(wù)不需要排隊(duì),如果有空閑的線(xiàn)程,則復(fù)用,無(wú)則新建線(xiàn)程。
ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); cachedThreadPool.execute(new Runnable() { @Override public void run() { // TODO Auto-generated method stub } });
2、newFixedThreadPool
這個(gè)算是一個(gè)中規(guī)中矩,也是Android sdk的源碼中用的比較多的,它的池子里的線(xiàn)程數(shù)有個(gè)最大值,可以自己設(shè)置,如果超過(guò)這個(gè)最大值,那么任務(wù)就會(huì)加入任務(wù)隊(duì)列去等待。
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(5); fixedThreadPool.execute(new Runnable() { @Override public void run() { // TODO Auto-generated method stub } });
3、 newSingleThreadExecutor
如字面意思,這是一個(gè)單例化的線(xiàn)程池,他只有一個(gè)線(xiàn)程去執(zhí)行任務(wù)。最常見(jiàn)的一個(gè)例子就是我們的UI線(xiàn)程啦。它就是典型的單線(xiàn)程模型。
ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor(); singleThreadExecutor.execute(new Runnable() { @Override public void run() { // TODO Auto-generated method stub } });
4、newScheduledThreadPool
這也是一個(gè)定長(zhǎng)的線(xiàn)程池,但是可以支持周期性的任務(wù)。
以下例子表示延遲一秒過(guò)后,每?jī)擅雸?zhí)行一次。
ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5); scheduledThreadPool.scheduleAtFixedRate(new Runnable() { @Override public void run() { } },1, 2, TimeUnit.SECONDS);
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android中封裝RecyclerView實(shí)現(xiàn)添加頭部和底部示例代碼
這篇文章主要給大家介紹了關(guān)于Android中封裝RecyclerView實(shí)現(xiàn)添加頭部和底部的相關(guān)資料,網(wǎng)上這方面的資料很多,但都不是自己需要的,索性自己寫(xiě)一個(gè)分享出來(lái)供大家參考學(xué)習(xí),需要的朋友們下面隨著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。2017-08-08Android仿ViVO X6 極速閃充動(dòng)畫(huà)效果
這篇文章主要介紹了Android仿ViVO X6 極速閃充動(dòng)畫(huà)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-07-07Android開(kāi)發(fā)案例手冊(cè)Application跳出dialog
這篇文章主要為大家介紹了Android開(kāi)發(fā)案例手冊(cè)Application跳出dialog,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06Android實(shí)現(xiàn)空心圓角矩形按鈕的實(shí)例代碼
頁(yè)面上有時(shí)會(huì)用到背景為空心圓角矩形的Button,可以通過(guò)xml繪制出來(lái)。這篇文章主要介紹了Android實(shí)現(xiàn)空心圓角矩形按鈕的實(shí)例代碼,需要的朋友參考下吧2017-01-01Android利用CountDownTimer實(shí)現(xiàn)驗(yàn)證碼倒計(jì)時(shí)效果實(shí)例
這篇文章主要給大家介紹了關(guān)于Android如何利用CountDownTimer實(shí)現(xiàn)驗(yàn)證碼倒計(jì)時(shí)效果的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-10-10Android學(xué)習(xí)筆記-保存文件(Saving Files)
這篇文章主要介紹了Android中保存文件(Saving Files)的方法,需要的朋友可以參考下2014-10-10詳解Android中常見(jiàn)的內(nèi)存優(yōu)化及內(nèi)存泄露場(chǎng)景
本文主要給大家介紹了Android中常見(jiàn)的內(nèi)存優(yōu)化及Android開(kāi)發(fā)中容易造成內(nèi)存泄露的場(chǎng)景,對(duì)我們的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-08-08Android中用Builder模式自定義Dialog的方法
在任何軟件操作系統(tǒng)中,Dialog即對(duì)話(huà)框都是一種重要的交互模式與信息載體,而Android系統(tǒng)本身的Dialog擁有固定的樣式,并且在5.0后采用Material Design設(shè)計(jì)風(fēng)格的Dialog美觀大氣。這篇文章將詳細(xì)介紹Android中用Builder模式自定義Dialog的方法,有需要的可以參考借鑒。2016-10-10Android 仿淘寶、京東商品詳情頁(yè)向上拖動(dòng)查看圖文詳情控件DEMO詳解
本文給大家介紹android 仿淘寶、京東商品詳情頁(yè)向上拖動(dòng)查看圖文詳情控件DEMO詳解,使用兩個(gè)scrollView,兩個(gè)scrollView 豎直排列,通過(guò)自定義viewGroup來(lái)控制兩個(gè)scrollView的豎直排列,以及滑動(dòng)事件的處理。對(duì)android 拖動(dòng)查看圖文詳情知識(shí)感興趣的朋友一起學(xué)習(xí)吧2016-09-09