java线程池综述

Posted 胡乐天

tags:

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

线程池四大类说明

java中线程池有四大类,其原理都是调用new ThreadPoolExecutor方法,下面说下该方法的各个参数意思:

    /**
     * 创建线程池方法,该方法为创建四种线程池调用的最终方法
     public ThreadPoolExecutor(corePoolSize,
                                     Integer.MAX_VALUE,
                                     0,
                                    NANOSECONDS,
                                    new DelayedWorkQueue(),
                                    Executors.defaultThreadFactory(),
                                    defaultHandler)

     > corePoolSize:
        核心线程池的大小,当向线程池提交一个任务时,若线程池已创建的线程数小于corePoolSize,
        即使存在空闲线程,也会通过创建一个新线程来执行该任务。直到已创建的线程数大于或等于corePoolSize时
        除了利用提交新任务来创建和启动线程(按需构造,也可以通过PrestartCoreThread()或PrestartAllCoreThreads()方法来提前创建线程池中的基本线程)

     > maximumPoolSize:
        最大线程池大小,线程池所允许的最大新线程个数。当存储任务的队列满了,
        且已创建的线程数,小于maximumPoolSize时,则线程池会创建新的线程来执行任务。
        另外,对于无界队列(),可忽略该参数。
        -无界队列:
            newFixedThreadPool()创建的线程池就是无界队列,即该队列能存储的任务个数为整数的最大值

     > keepAliveTime:
        线程存活时间,当线程池中线程数大于核心数时,线程的空闲时间如果超过该值,那么这个线程就会被销毁,直到线程池中线程数小于
        核心线程数。

     > unit:
            线程空闲时,空闲时间值的单位,采用枚举类型,常用的有:TimeUnit.SECONDS、TimeUnit.MINUTES
     > workQueue:
        任务队列,用于传输和保存等待执行任务的阻塞队列。

     > threadFactory:
        线程工厂,用于创建新线程。threadFactory创建的线程也是采用new Thread()方式,
        threadFactory创建的线程的线程名都有同于的风格:pool-m-thread-n(m为线程池的编号,n为线程池内的线程的编号)

     > handler:
        线程饱和策略。当队列满了并且线程池中数目达到最大线程数,在加入线程会执行此策略。
     * @param args
     */

四种线程池详解请看后续

以上是关于java线程池综述的主要内容,如果未能解决你的问题,请参考以下文章

Java——线程池

Java线程池详解

Java线程池详解

Java 线程池详解

newCacheThreadPool()newFixedThreadPool()newScheduledThreadPool()newSingleThreadExecutor()自定义线程池(代码片段

Java线程池详解