99热99这里只有精品6国产,亚洲中文字幕在线天天更新,在线观看亚洲精品国产福利片 ,久久久久综合网

歡迎加入QQ討論群258996829
麥子學(xué)院 頭像
蘋果6袋
6
麥子學(xué)院

Android自帶的線程池有哪些?

發(fā)布時間:2017-07-27 11:06  回復(fù):0  查看:2326   最后回復(fù):2017-07-27 11:06  
Android開發(fā) 中,如果我們要執(zhí)行某個耗時任務(wù),一般都會考慮開啟一個線程去處理。
  因為我們都知道一個線程run 方法執(zhí)行完畢后,才算真正結(jié)束,但是,這只是結(jié)束,并沒有被回收,會一直閑置在那里,等待 GC 去回收,所以如果每執(zhí)行一個任務(wù),我們都 new 一個線程,那么在某些極端的場景下,是比較消耗內(nèi)存的。
  本文 先簡單介紹下Android 中自帶的四種線程池:
  、 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);
來源: 簡書

您還未登錄,請先登錄

熱門帖子

最新帖子

?