线程池执行过程

  public ThreadPoolExecutor(int corePoolSize,
                              int maximumPoolSize,
                              long keepAliveTime,
                              TimeUnit unit,
                              BlockingQueue<Runnable> workQueue) 

 

假入创建的线程池核心数5,最大12。开始的时候第一个任务进来,没满核心大小,直接创建线程执行,现在线程池活跃的数是1,现在又来一个任务,1还是小于5,还是直接创建第二个线程执行任务,现在线程池活跃是2,一直创建到5。现在活跃是5了,终于没有任务来了,线程池正常了。突然,又来一个任务,现在判断发现核心数本来已经满了,怎么办呢,那就让这个任务等待吧(加入等待队列),看前五个哪个执行完了再把空出来了的线程用来执行这个任务。过一会有个任务执行完了,就轮到了排队的任务6了。执行中,又陆陆续续来了一堆任务(假设),可是现在线程池还是满的,没办法,只有把他们放到队列去慢慢排队吧!排着排着越排越多,排满了,但是还是有任务在申请加入,怎么办,没办法,线程池看情况不对劲,只好再增加线程去执行排队的任务,现在增加的就是非核心的线程。终于排在队列前面的任务看到希望了,就被执行了。那些原本排不进来的也终于排进来了。随着任务的增加,线程池的创建,到了线程池允许最大数12,现在任务队列外还有在申请加入,可是没法了,只能拒绝掉。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值