七叶笔记 » java编程 » Spring Boot 多个定时器冲突问题的解决方法

Spring Boot 多个定时器冲突问题的解决方法

战术分析

上次的博客疏忽了定时器的一个大重点…

实际开发项目中一定不止一个定时器,很多场景都需要用到,而多个定时器带来的问题 : 就是如何避免多个定时器的互相冲突。

推荐一个 Spring Boot 基础教程及实战示例:https://github.com/javastacks/spring-boot-best-practice 

使用场景

我们的订单服务,一般会有一个待支付订单,而这个待支付订单是有时间限制的,比如阿里巴巴的订单是五天,淘宝订单是一天,拼多多订单是一天,美团订单是15分钟…

基金系统中,如何同时更新多个存储分区中的基金信息…

总的来说,实际开发中定时器需要解决多个定时器同时并发的问题,也要解决定时器之间的冲突问题

问题不大,说到并发那就离不开多线程了…慢慢看看就懂了

问题场景重现

我们清晰的看到执行结果都是scheduling-1

就此可以判定,Springboot定时器默认的是单线程的

但是问题就来了,如果在线程争夺资源后,某个线程需要比较长时间才能执行完,那其他的定时器怎么办,都只能进入等待状态,时间越久,累计等待的定时器越多,这就容易引起雪崩…

其实只需要添加一个配置类然后加注解就可以解决问题了

添加注解

具体代码如下 :

配置类

具体代码如下 :

然后我们可以很清晰地看到:

如上,也就解决了用多线程解决Springboot多定时器冲突的问题

到此这篇关于Spring Boot 多个定时器冲突问题的解决方法的文章就介绍到这了,更多相关Spring Boot 定时器冲突内容请搜索七叶笔记以前的文章或继续浏览下面的相关文章希望大家以后多多支持七叶笔记!

相关文章