线程池ThreadPoolExecutor核心参数介绍

new ThreadPoolExecutor(
corePoolSize int类型 核心线程数
maximumPoolSize int类型 最大线程数
keepAliveTime long类型 空闲时间
unit TimeUnit类型 空闲时间的时间单位
workQueue BlockingQueue类型 任务队列
handler RejectedExecutionHandler类型 拒绝策略)
整个流程为:
1:首先根据corePoolSize核心线程数的数量创建线程数量,当创建的线程达到核心线程数的数量时,
2:再有任务提交时,会放入任务队列中,
3:当任务队列也满了时,就会去创建大线程数maximumPoolSize的数量,
4:当最大线程数也满了,还有任务时,执行拒绝策略RejectedExecutionHandler
corePoolSize:线程池核心线程的数量。核心线程就是如果不做特殊设置就永远不会停止的线程,即使没有任务执行了,核心线程也不会被回收掉。线程池总是会保证最少corePoolSize个线程存在。

maximumPoolSize:线程池的最大线程数量,它表示线程池的最大线程数限制

keepAliveTime:定义的空闲时间,当任务被消耗完毕后,高于corePoolSize的这部分线程在空闲多长时间会被关闭回收掉。

unit:空闲的时间单位,可以指定为秒、分钟、小时等单位信息,与keepAliveTime共同使用,共同定义空闲时间。

workQueue:任务队列,它是一个队列结构的容器。正常情况下,任务被提交到线程池之后,会立即被核心线程所执行,但是当核心线程都处于忙碌状态的时候,没有核心线程去执行这个任务,那么这个任务会被暂时提交到任务队列中等待核心线程空闲下来再去执行!当任务队列被放满了,比如一个长度为 10 的队列,里面已经放了 10 个任务,那么第 11 个任务就会触发 maximumPoolSize 线程的执行。

threadFactory:线程工厂,主要用于控制线程池以何种方式去产生一个新线程,比如去设置线程池中产生线程的名字、优先级、是不是守护线程等这些信息。

handler:拒绝策略,这个参数就是线程池在处理突发大量任务的最后的 兜底手段。当 corePoolSize、maximumPoolSize、workQueue 全部都被任务填满了之后,线程池会认为已经无力再执行后续提交的任务,此时对于后续的任务会触发拒绝策略来拒绝任务(有关于拒绝策略的知识点会在后续详细说明)。

  • 16
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值