zoukankan      html  css  js  c++  java
  • Android ThreadPool

    Android开发中,如果我们要执行某个耗时任务,一般都会考虑开启一个线程去处理。
    一个线程run方法执行完毕后,才算真正结束;但是,这只是结束,并没有被回收;会一直闲置在那里,等待GC去回收。所以如果每执行一个任务,都new一个线程的话,那么在极端的场景下,是比较消耗内存的。
    此时就可以使用线程池,本质是对象实例复用的原理。


    Android中自带的四种线程池:

    1 .newCachedThreadPool
    这种线程池比较灵活,也就是说它的池里的线程数量并不是固定的,理论上可以无限大,任务不需要排队,如果有空闲的线程,则复用,无则新建线程。

    1 ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
    2 cachedThreadPool.execute(new Runnable() {
    3 
    4      @Override
    5      public void run() {
    6           // TODO Auto-generated method stub
    7 
    8      }
    9 });

    2.newFixedThreadPool

    这个算是一个中规中矩,也是Android sdk的源码中用的比较多的,它的池子里的线程数有个最大值,可以自己设置,如果超过这个最大值,那么任务就会加入任务队列去等待。

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

    3.newSingleThreadExecutor

    如字面意思,这是一个单例化的线程池,他只有一个线程去执行任务。最常见的一个例子就是我们的UI线程啦。它就是典型的单线程模型。

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

    4.newScheduledThreadPool
    这也是一个定长的线程池,但是可以支持周期性的任务。
    以下例子表示延迟一秒过后,每两秒执行一次。

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

    http://blog.csdn.net/feiyang877647044/article/details/51603045

    AsyncTask与ThreadPool异步加载大量图片时的对比

    http://blog.csdn.net/carrey1989/article/details/12002033

    demo下载

  • 相关阅读:
    ASP.NET在禁用视图状态的情况下仍然使用ViewState对象【转】
    Atcoder Regular Contest 061 D Card Game for Three(组合数学)
    Solution 「CERC 2016」「洛谷 P3684」机棚障碍
    Solution 「CF 599E」Sandy and Nuts
    Solution 「洛谷 P6021」洪水
    Solution 「ARC 058C」「AT 1975」Iroha and Haiku
    Solution 「POI 2011」「洛谷 P3527」METMeteors
    Solution 「CF 1023F」Mobile Phone Network
    Solution 「SP 6779」GSS7
    Solution 「LOCAL」大括号树
  • 原文地址:https://www.cnblogs.com/genggeng/p/6894471.html
Copyright © 2011-2022 走看看