美文网首页程序员Android开发经验谈Android开发
Android:线程池的空闲线程在做什么?

Android:线程池的空闲线程在做什么?

作者: 我在等你回复可你没回 | 来源:发表于2018-07-23 20:06 被阅读44次

    线程池的空闲线程在做什么??这个我们通过一个例子看看

    抄网上一个例子

    import java.util.ArrayList;
    import java.util.concurrent.BlockingQueue;
    import java.util.concurrent.LinkedBlockingQueue;
    import java.util.concurrent.ThreadPoolExecutor;
    import java.util.concurrent.TimeUnit;
    
    public class HelloWorld {
        // 核心线程数量
        private static int corePoolSize = 3;
        // 最大线程数量
        private static int maxPoolSize = 5;
        // 线程存活时间:当线程数量超过corePoolSize时,10秒钟空闲即关闭线程
        private static int keepAliveTime = 10000;
        // 缓冲队列
        private static BlockingQueue<Runnable> workQueue = null;
        // 线程池
        private static ThreadPoolExecutor threadPoolExecutor = null;
    
        static {
            workQueue = new LinkedBlockingQueue<Runnable>(5);
            threadPoolExecutor = new ThreadPoolExecutor(corePoolSize, maxPoolSize, keepAliveTime, TimeUnit.SECONDS,
                    workQueue);
        }
    
      public static void main(String[]agrs)
        {
          try {
              for (int i = 0; i < 10; i++) {
                  System.out.println("=========第" + i + "次");
                  threadPoolExecutor.execute(new MyTask());
                  System.out.println("线程池中正在执行的线程数量:" + threadPoolExecutor.getPoolSize());
                  System.out.println("线程池缓存的任务队列数量:" + threadPoolExecutor.getQueue().size());
              }
          } finally {
             // threadPoolExecutor.shutdown();
          }
        }
    }
    

    点击执行,然后发现程序还没有退出,这是为何呢?因为线程池中的线程还没有退出罗。那他是在做什么呢?我们打出线程的trace看看。


    做什么

    可以看到他是在getTask方法wait了,静静地等待任务的到来。这种线程就是空闲线程啦。

    相关文章

      网友评论

        本文标题:Android:线程池的空闲线程在做什么?

        本文链接:https://www.haomeiwen.com/subject/bvxsmftx.html