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线程池综述的主要内容,如果未能解决你的问题,请参考以下文章
newCacheThreadPool()newFixedThreadPool()newScheduledThreadPool()newSingleThreadExecutor()自定义线程池(代码片段