Java并发编程-06 线程池

原理

在这里插入图片描述
1.如果线程数小于corePoolSize,新建线程执行提交的任务
2.如果线程数等于corePoolSize,阻塞队列未满,任务提交到阻塞队列,核心线程从阻塞队列获取任务执行
3.如果阻塞队列已满,线程数小于maxNumPoolSize,新建线程执行任务
4.如果线程数等于maxNumPoolSize,新提交的任务通过拒绝策略处理

线程池的状态

RUNNING:接收新任务并处理队列中的任务
SHUTDOWN:处理队列中的任务,不接收新任务
STOP:不接收新任务,不处理队列中的任务,并且会中断在处理的任务(一个任务能不能被中断得看任务本身)
TIDYING:所有任务都终止了,线程池中也没有线程了,达到此状态会调用线程池的terminated()方法
TERMINATED:terminated()方法执行完之后就会转变为TERMINATED

线程池中阻塞队列的作用

1.线程池中的线程执行完创建线程时绑定的第一个任务后,会不断的从队列中获取任务并执行
2.队列中没有任务了,阻塞队列会阻塞尝试获取任务的线程从而维持线程的存活,等队列中有任务后线程就会拿到任务继续执行,通过这种方式维持线程池中指定数量的核心线程
3.某个线程从队列获取任务时,会判断是否使用超时阻塞获取,(非核心线程使用poll,核心线程使用take),非核心线程超时没获取到任务就会自然消亡。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值