赞
踩
线程池的构造函数有7个参数,分别是corePoolSize、maximumPoolSize、keepAliveTime、unit、workQueue、threadFactory、handler。
一、corePoolSize
核心线程数,是指线程池中长期存活的线程数。int 类型。可以理解为长期存在的、“常驻的”线程。就好比是地主家的长工一样,无论这一年的活多还是活少,都不会被辞退。
二、maximumPoolSize
线程池最大线程数量
最大线程数,是指线程池允许创建的最大线程数量。最大线程数的数量包含核心线程数。int 类型。比如,地主家的活太多了,光要长工可能干不完,需要一些临时工来帮忙,长工的数量 + 临时工的数量 = 最大线程数。
需要注意的是,在创建线程池的时候,最大线程数 maximumPoolSize 不能小于核心线程数 corePoolSize,否则会在程序运行时报异常:
核心线程数为 2,最大线程数为 1,报 java.lang.IllegalArgumentException 异常,但是最大线程数可以等于核心线程数
三、keepAliveTime
空闲线程存活时间
空闲线程存活时间,指当线程池中没有任务是,会销毁一些线程,
销毁的线程数 = maximumPoolSize - corePoolSize。long 类型。
四、unit
空闲线程存活时间单位
时间单位,指空闲线程存活时间单位,与 keepAliveTime 配合使用。单位为 TimeUnit,常用取值有以下 7 个:
五、workQueue
工作队列
阻塞队列,指线程池存放任务的队列,用来存储线程池的所有待执行的任务。BlockingQueue 类型。取值有以下几种:
比较常用的是 LinkedBlockingQueue。线程池的排队策略和该参数息息相关。
六、threadFactory
线程工厂
线程工厂。线程池创建线城市调用的工厂方法,通过此方法可以设置线程的优先级、线程的命名规则以及线程的类型(用户线程还是守护线程)等。ThreadFactory 类型。
七、handler
拒绝策略
拒绝策略。当线程池的任务超出线程池队列可以存储的最大值之后,拒绝任务的策略。RejectedExecutionHandler 类型。取值有:
线程池的默认拒绝策略是 AbortPolicy–拒绝并抛出异常。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。