java中多个@Scheduled定时器不执行的解决方法

作者:北漂编程小王子 时间:2023-03-19 02:32:34 

项目背景:在项目中包含两个定时任务,配置信息如下:

1、@Scheduled(initialDelay = 1,fixedDelay=10000)

public voud aa(){}

1、@Scheduled(initialDelay = 1,fixedDelay=10000)

public voud bb(){}

我们需要的都是项目启动后,同时调用执行aa 和bb 方法,我们发现只能执行其中一个!那么如何解决呢?

原因是:@Scheduled注解会在默认情况下以单线程的方式执行定时任务。

这个“单线程”指两个方面:

如果一个定时任务执行时间大于其任务间隔时间,那么下一次将会等待上一次执行结束后再继续执行。
如果多个定时任务在同一时刻执行,任务会依次执行。

我们项目都是配置了initialDelay =1 ,Scheduled启动一个的时候,另外一个根本得不到执行!当然fixedDelay是可以正常按照执行间隔来执行的,就是首次执行收到影响!

为了让@Scheduled效率更高,我们可以通过两种方法将定时任务变成多线程执行::

方法1、在启动类中配置TaskScheduler线程池大小

@Bean
public TaskScheduler taskScheduler() {
ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
taskScheduler.setPoolSize(10);//不配置默认是1
return taskScheduler;
}

方法2、利用Spring提供的@Async注解和@EnableAsync注解

@Component
@EnableAsync
public class TimedTask{
@Async
@Scheduled(initialDelay = 1,fixedDelay=10000)
public void aa() {
//执行你的业务逻辑
}

@Async
@Scheduled(initialDelay = 1,fixedDelay=10000)
public void bb() {
//执行你的业务逻辑
}

来源:https://blog.csdn.net/wujian_csdn_csdn/article/details/127650056

标签:java,@scheduled,定时器
0
投稿

猜你喜欢

  • .net与javascript脚本的交互方法总结

    2021-09-11 09:21:32
  • Java获取凌晨时间戳的方法分析

    2022-02-01 23:46:58
  • Android编程简单实现九宫格示例

    2021-12-06 21:43:57
  • Spring BeanFactory 与 FactoryBean 的区别详情

    2023-12-23 02:51:46
  • java发送http请求并获取状态码的简单实例

    2023-12-06 00:59:14
  • Java获取json数组对象的实例讲解

    2023-08-24 14:55:28
  • java的各种类型转换全部汇总(推荐)

    2022-03-01 01:25:43
  • 解决Springboot启动报错:类文件具有错误的版本61.0,应为 52.0

    2023-03-13 02:16:11
  • Android mvvm之LiveData原理案例详解

    2023-09-29 11:49:26
  • 详解基于java的Socket聊天程序——初始设计(附demo)

    2023-02-01 06:46:21
  • java获取文件的inode标识符的方法

    2021-06-19 15:10:49
  • java判断list不为空的实现,和限制条数不要在一起写

    2022-01-24 13:14:38
  • 进度条ProgressBar及ProgressDialog(实例)

    2021-09-24 01:07:42
  • Android应用中利用ViewPager实现多页面滑动切换效果示例

    2023-01-27 04:32:19
  • Android使用ItemTouchHelper实现侧滑删除和拖拽

    2021-12-18 20:00:40
  • Java简单计时的实现案例(可以用来限时循环)

    2023-02-01 21:39:19
  • android读取Assets图片资源保存到SD卡实例

    2022-12-18 19:50:24
  • Android自定义View实现水波纹引导动画

    2021-07-02 05:42:25
  • Maven聚合开发实例详解

    2023-07-14 11:18:12
  • Java函数式编程(十二):监控文件修改

    2022-08-11 10:21:01
  • asp之家 软件编程 m.aspxhome.com