线程池学习-ThreadPoolExecutor

线程池学习-ThreadPoolExecutor

常用的构造方法:
ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime,TimeUnit unit, BlockingQueue workQueue)

参数说明:
corePoolSize --核心线程数
maximumPoolSize --线程池最大允许线程数
keepAliveTime --当线程数大于corePoolSize ,在没有超过指定时间时是不会将空余线程从线程池删除的,如果空闲时间超出指定时间,则删除。
unit --时间单位
workQueue --当线程数大于corePoolSize,存放待执行任务的队列

使用关系具体说明:
1)A代表execute(runnable)欲执行的runnable的数量;
2)B代表corePoolSize;
3)C代表maximumPoolSize;
4)D代表A-B(假设A>=B);
5)E代表new LinkedBlockingDeque();队列,无构造参数;
6)F代表SynchronousQueue队列;
7)G代表keepAliveTime。

1、当A<=B,则任务直接从线程池获取线程,执行任务。队列及超时时间等参数可以忽略。
在这里插入图片描述
2、当B<A<=maximumPoolSize,则先执行B的任务,至于多出来的D,根据队列可以分为两种:
2.1 如果队列为E,则将多出的D放在队列,排队等待执行。
在这里插入图片描述
2.2 如果队列为F,则多余的D也会立即新建线程去执行,执行完毕后,空闲时间超过指定的时间G后,从线程池中移除。在这里插入图片描述

3、当A>maximumPoolSize,也是分为两种
3.1 如果队列为E,则将多出的D放在队列,排队等待执行。
在这里插入图片描述
3.2 如果队列为F,则会执行maximumPoolSize任务,多余任务不再执行,抛出异常。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值