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

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

Android自帶的四種線程池使用總結

2019-10-22 18:31:35
字體:
來源:轉載
供稿:網友

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

因為我們都知道一個線程run方法執(zhí)行完畢后,才算真正結束,但是,這只是結束,并沒有被回收,會一直閑置在那里,等待GC去回收,所以如果每執(zhí)行一個任務,我們都new一個線程,那么在某些極端的場景下,是比較消耗內存的。

之前的內存優(yōu)化的文章中,我講過關于android/223556.html">android中的池的概念,也就是復用的機制,那么對于線程也有個線程池。

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

1 、newCachedThreadPool

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

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

2、newFixedThreadPool

這個算是一個中規(guī)中矩,也是Android sdk的源碼中用的比較多的,它的池子里的線程數有個最大值,可以自己設置,如果超過這個最大值,那么任務就會加入任務隊列去等待。

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

3、 newSingleThreadExecutor

如字面意思,這是一個單例化的線程池,他只有一個線程去執(zhí)行任務。最常見的一個例子就是我們的UI線程啦。它就是典型的單線程模型。

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

4、newScheduledThreadPool

這也是一個定長的線程池,但是可以支持周期性的任務。

以下例子表示延遲一秒過后,每兩秒執(zhí)行一次。

ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5);    scheduledThreadPool.scheduleAtFixedRate(new Runnable() {      @Override      public void run() {      }    },1, 2, TimeUnit.SECONDS);

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 遂溪县| 滁州市| 隆林| 和平县| 嘉禾县| 离岛区| 库伦旗| 黔东| 类乌齐县| 连平县| 朝阳区| 崇信县| 武穴市| 新干县| 北京市| 虹口区| 淅川县| 明水县| 苏尼特右旗| 古浪县| 淳化县| 周至县| 洛隆县| 华亭县| 长泰县| 定西市| 成安县| 府谷县| 沙田区| 东丰县| 沁阳市| 湖北省| 乳源| 洪洞县| 溧水县| 双江| 上思县| 大宁县| 尤溪县| 云安县| 南投市|