线程池相关

1、底层工作原理

****** 往线程池里面丢任务,线程数小于 corePoolSize的话,就会创建新的线程;如果执行完任务,没有新任务,线程会阻塞,等待新的任务到来。

2、线程池的核心配置参数

corePoolSize:核心线程数

maxImumPoolsize:最大线程数

KeepAliveTime:空闲时间,销毁线程

queue:队列

如果线程都创建完了去处理任务,队列还是满的,此时还有新的任务来,只能reject掉,有几种reject拒绝策略,可以传入RejectedExecutionHandler:

1、AbortPolicy;2、DiscardPolicy;3、DiscardOldestPolicy;4、CallerrunsPolicy

3、如果线程池队列满了之后

如果使用有界队列,可以避免内存溢出;

如果线程池无法执行更多的任务,可以自定义一个reject策略,如果线程池无法执行更多的任务了,此时建议你可以把这个任务信息持久化写入磁盘里去,后台专门启动一个线程,后续等待你的线程池的工作负载降低了,他可以慢慢的从磁盘里读取之前持久化的任务,重新提交到线程池里去执行。

4、如果线上机器突然宕机,线程池的阻塞队列中的请求怎么办

必然会使线程池里积压的任务丢失。所以,可以提交一个任务到线程池之前,先在数据里插入这个任务的信息,然后更新它的状态:未提交、已提交、已完成。提交成功后,更新状态为已提交。

重启后,后台线程去扫描数据库里面的未提交和已提交状态的任务;重新提交到线程池。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值