Spring定时任务@scheduled之使用多线程

缺乏、安全感 2023-06-26 10:38 99阅读 0赞

前言

" class="reference-link">20191231113453373.gif

经过反馈发现每次到周六签到任务时间就会异常,所以导致出问题。先看了看代码是莫得问忒的,于是问题肯定是出在定时任务@scheduled身上,周六自动任务每次延迟执行那就找找周六的问题。

查看了一下周六的话签到量会增大一倍以上,于是猜测是线程阻塞的问题。然后又发现从14号开始的每个周六延迟到了10点半,仔细回想了一下查看了下代码提交记录,在12号我新开了两个周六早上的定时同步任务。spring的定时任务默认是单线程的,他在某些场景下会造成堵塞,此时,我的应该是任务过多被阻塞延迟执行了。多线程走起~

使用@Async

我们可以使用Spring的@Async注解十分容易的实现多线程的任务执行。
测试代码:

  1. @Scheduled(cron = "0/2 * * * * ?")
  2. @Async
  3. public void doTask() throws InterruptedException {
  4. logger.info(Thread.currentThread().getName()+"===task run");
  5. Thread.sleep(6*1_000);
  6. logger.info(Thread.currentThread().getName()+"===task end");
  7. }

结果日志

  1. 2019-12-30 16:0

发表评论

表情:
评论列表 (有 0 条评论,99人围观)

还没有评论,来说两句吧...

相关阅读