线程池工作流程

线程池无非就那几个参数:核心线程、最大线程、回收时间、队列,没啥难的,有手就能学废

 

我这里直接上demo,不知道参数啥意思的可以先去隔壁补补课,虽然本文也会提到,但你最好先大概知道点,线程池实现运行机制总结

 

 

重点来了,我们带着问题来看demo

 

如上,new了个线程池,core线程数10,最大线程数20,任务队列容量30,请听题!!

 

问题0:往上述线程池中提交5个任务,任务执行完总耗时多少?

 

分析:我核心线程数10,也就是说10个线程会长期处于活跃状态,来任务立马能执行,5<10,所以5个任务立马全部执行,多线程并行当然是异步,所以是500ms

 

 

 

插个嘴:为什么不是500而是540,因为代码执行需要花时间,毕竟是模拟提交任务,并不是真正一瞬间提交完,而且误差跟你电脑cpu频率有关

 

问题1:提交10个任务,总耗时多少?

 

依然是500,10个任务和5个任务其实都一样,没超过核心线程数,来一个执行一个

 

 

问题2:提交11个任务,总耗时多少? 

 

1000,别惊讶,这就是很多人没搞懂线程池机制的关键点,虽然只多了一个任务,但是第11个任务不会马上执行,因为队列没满,所以前10个任务会立马执行,而第11个会被扔到队列中,等有线程空出来了再执行

 

 

问题3:提交20个任务,总耗时多少?

 

也是1000,别问为什么也别杠,今天就是耶稣来了它也是1000,这20个任务,前10个任务来一个执行一个,从第11个到第20个会全部丢进队列,当前十个任务有任务执行完了,才会从队列取出执行

 

 

问题4:提交30个任务,总耗时多少?

 

当然是1500啦,30/10=3,3*500=1500

 

 

问题5:提交40个任务,总耗时多少?

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值