我们都知道线程池中很多的参数,了解这些参数的意义对实际问题的定义和解决是非常重要的,本文将会重点介绍:corePoolsize、maxPoolSize、keeyAliveTime、ThreadFactory、workQueue及Handler
corePoolSize
核心线程数,即就是中线程池中长时间稳定存活的线程数
maxPoolSize
最大线程数,重点强调线程中最大可包含的线程数。最大线程数的上限需要根据实际情况而定
keepAliveTime
线程的存活时间,该参数是指非核心线程的存活时间,用来严格控制线程池中线程的数量尽可能的保持在一定的范围内,若要修改核心线程的存活时长,可参考相关参数
ThreadFactory
线程创建的工厂,新的线程都是由ThreadFactory创建的,系统默认使用的是Executors.defaultThreadFactory创建的,用它创建出来的线程的优先级、组等都是一样的,并且他都不是守护线程。我们也可以使用自定义的线程创建工厂,并对相关的值进行修改
WorkQueue
线程的工作队列,常见的类型有三种,如下
1.直接交换:SynchronousQueue,任务不多,是没有容量的,maxPoolSize需要大一点
2.*队列:LinkedBlockingQueue,可产生OOM
3.有界队列:ArrayBlockingQueue