并发编程-8.线程池ThreadPoolExecutor底层原理源码分析(下)

目录

学习内容重点:

线程池源码的基础属性和方法

execute方法

 addWorker方法

runWorker方法 


学习内容重点:

1、线程池中基本属性和方法源码解析

2、线程池的五种状态变换源码分析

3、线程池添加线程源码解析

4、线程池线程运行执行任务源码解析

5、线程池shutdown源码解析

6、线程池中线程退出机制源码解析

线程池源码的基础属性和方法

在线程池的源码中,会通过一个AtomicInteger类型的变量ctl,来表示线程池的状态和当前线程池中的工作线程数量。

一个Integer占4个字节,也就是32个bit,线程池有5个状态:

2个bit能表示4种状态,那5种状态就至少需要三个bit位,Integer.SIZE为32,所以COUNT_BITS为29,最终各个状态对应的二级制为:

所以,只需要使用一个Integer数字的最高三个bit,就可以表示5种线程池的状态,而剩下的29个bit就可以用来表示工作线程数

同时,还有一些相关的方法:

execute方法

当执行线程池的execute方法时:

 addWorker方法

 

所以,对于addWorker方法,核心逻辑就是:

  1. 先判断工作线程数是否超过了限制
  2. 修改ctl,使得工作线程数+1
  3. 构造Work对象,并把它添加到workers集合中
  4. 启动Work对象对应的工作线程

runWorker方法 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值