当前位置:   article > 正文

线程池之FixedThreadPool学习

fixedthreadpool

简介

FixedThreadPool是可重用固定线程数线程池

创建方法

public static ExecutorService newFixedThreadPool(int nThreads) {
        return new ThreadPoolExecutor(nThreads, nThreads,
                                      0L, TimeUnit.MILLISECONDS,
                                      new LinkedBlockingQueue<Runnable>());
    }
  • 1
  • 2
  • 3
  • 4
  • 5

corePoolSize和maximumPoolSize都设置为创建FixedThreadPool指定的参数nThreads,即FixedThreadPool只有核心线程,且数量固定,没有非核心线程。keepAliveTime设置为0L,代表多余的线程会被立即终止。因为不会产生多余的线程,所以keepAliveTime是无效的参数;任务队列采用了无界的阻塞队列LinkedBlockingQueue(容量默认为Integer.MAX_VALUE)。

execute方法的执行

在这里插入图片描述当执行execute方法时,若当前运行的线程未达到核心线程数corePoolSize,就创建核心线程处理任务;否则,就把任务添加到LinkedBlockingQueue中。

总结

FixedThreadPool是一个有固定核心线程数的线程池,且这些核心线程不会被回收。当线程数超过corePoolSize时,就把任务存进任务队列。若线程池有空闲线程,就去任务队列中取任务。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/246466
推荐阅读
相关标签
  

闽ICP备14008679号