ThreadPoolExecutor

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ThreadPoolExecutor相关的知识,希望对你有一定的参考价值。

一、AbstractThreadPoolExecutor

    该类是个抽象类,里面实现了ExecutorService的一些默认的实现。

二、ThreadPoolExecutor(ExecutorService的一个实现)

技术分享  

1、提供了各种的配置参数可以使我们灵活的配置线程池。一般我们使用Executors产生一些参数已经配置好的线程池即可,当需要灵活产生自己的线程池时使用该类自己配置产生)

2、线程池的参数

    Core pool size   当线程数量小于core size的时候,线程池只会创建新的线程,即使当前线程池里面有线程处于idle       可以通过 setCorePoolSize(int)来进行动态的设定,通过 getCorePoolSize()来查询

    max pool size  线程池的最大线程数量                                                                                                    可以通过 setMaximumPoolSize(int)来进行动态的设定,通过 getMaximumPoolSize()来查询

    On-demand construction   当线程池的线程少于core的时候,线程池里面是没有core线程的,可以 调用 prestartCoreThread()【初始化一个core线程】 or prestartAllCoreThreads()【初始化所有的core线程】

    Creating new threads   默认使用的是 Executors.defaultThreadFactory(),产生的线程是在同一个ThreadGroup,NORM_PRIORITY priority和 non-daemon status。

    Keep-alive times    线程数量大于core时,默认是先使用idle线程,如果没有idle线程而且线程数量小于max,则创建新的线程。当线程数量大于core时,如果一个线程处于idle的时间超过keep-alive times值,则回收该                                线程。通过 setKeepAliveTime(long, java.util.concurrent.TimeUnit).动态设置该参数,通过 getKeepAliveTime(java.util.concurrent.TimeUnit)进行查询。

                                通过 allowCoreThreadTimeOut(boolean)设置core线程处于idle的时候也能自动回收。

Queuing

  3、

 

以上是关于ThreadPoolExecutor的主要内容,如果未能解决你的问题,请参考以下文章

聊聊高并发(四十)解析java.util.concurrent各个组件(十六) ThreadPoolExecutor源代码分析

ThreadPoolExecutor().map 与 ThreadPoolExecutor().submit 有何不同?

Java中的线程池——ThreadPoolExecutor源代码分析

JDK1.7中的ThreadPoolExecutor源代码剖析

Java 1.7 ThreadPoolExecutor源代码解析

高并发多线程基础之ThreadPoolExecutor源代码分析