国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android自帶的四種線程池使用總結(jié)

2019-12-12 02:23:51
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

在Android開(kāi)發(fā)中,如果我們要執(zhí)行某個(gè)耗時(shí)任務(wù),一般都會(huì)考慮開(kāi)啟一個(gè)線程去處理。

因?yàn)槲覀兌贾酪粋€(gè)線程run方法執(zhí)行完畢后,才算真正結(jié)束,但是,這只是結(jié)束,并沒(méi)有被回收,會(huì)一直閑置在那里,等待GC去回收,所以如果每執(zhí)行一個(gè)任務(wù),我們都new一個(gè)線程,那么在某些極端的場(chǎng)景下,是比較消耗內(nèi)存的。

之前的內(nèi)存優(yōu)化的文章中,我講過(guò)關(guān)于android中的池的概念,也就是復(fù)用的機(jī)制,那么對(duì)于線程也有個(gè)線程池。

這篇文章先簡(jiǎn)單介紹下Android中自帶的四種線程池:

1 、newCachedThreadPool

這種線程池比較靈活,也就是說(shuō)它的池里的線程數(shù)量并不是固定的,理論上可以無(wú)限大,任務(wù)不需要排隊(duì),如果有空閑的線程,則復(fù)用,無(wú)則新建線程。

ExecutorService cachedThreadPool = Executors.newCachedThreadPool();    cachedThreadPool.execute(new Runnable() {      @Override      public void run() {        // TODO Auto-generated method stub      }    });

2、newFixedThreadPool

這個(gè)算是一個(gè)中規(guī)中矩,也是Android sdk的源碼中用的比較多的,它的池子里的線程數(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è)單例化的線程池,他只有一個(gè)線程去執(zhí)行任務(wù)。最常見(jiàn)的一個(gè)例子就是我們的UI線程啦。它就是典型的單線程模型。

ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();    singleThreadExecutor.execute(new Runnable() {      @Override      public void run() {        // TODO Auto-generated method stub      }    });

4、newScheduledThreadPool

這也是一個(gè)定長(zhǎng)的線程池,但是可以支持周期性的任務(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í)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 新化县| 滕州市| 丹寨县| 海林市| 东海县| 长武县| 宜章县| 望江县| 安岳县| 游戏| 闻喜县| 惠州市| 东阳市| 嵊州市| 泾源县| 夏邑县| 新竹市| 肥乡县| 扶风县| 英山县| 海宁市| 屯留县| 临邑县| 藁城市| 巴中市| 大埔县| 涡阳县| 云浮市| 三门峡市| 晋城| 高台县| 察哈| 呼玛县| 澜沧| 桃江县| 大厂| 和顺县| 镇沅| 麦盖提县| 普兰店市| 雷山县|