java线程池

java线程池一共有4种
线程池的核心参数:核心线程数,最大线程数,空闲线程存活时间,存活时间的单位,等待队列,拒绝策略,线程工厂

线程池的流程

1.执行execute方法,判断当前线程数是否小于核心线程数,如果小于执行addwork方法
2.如果大于核心线程数,判断线程池是否处于正常状态,并且将线程放入阻塞队列中
3.如果成功放入,则判断是否有空闲,如果没有空闲线程,这创建一个新的线程
4.如果失败,参数一次addwork方法,失败后执行拒绝策略

addwork
1.利用cs机制修改线程池的值
2.将线程变成work
3.利用rentrylok将work加入到线程中
4.执行

work方法里面
会调用线程工厂创建一个线程

start方法:会执行work的run方法,run方法里面会执行runWork方法

runWork方法里面有个while循环会不停的条用getTask方法获取为执行的线程,并且执行
执行失败了,会掉用processWorkerExit清理work的方法。处理移除work外,还会判断当前线程是否小于核心线程,如果小于会增加一个线程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值