Spring定时任务@scheduled之使用多线程
前言
" class="reference-link">
经过反馈发现每次到周六签到任务时间就会异常,所以导致出问题。先看了看代码是莫得问忒的,于是问题肯定是出在定时任务@scheduled身上,周六自动任务每次延迟执行那就找找周六的问题。
查看了一下周六的话签到量会增大一倍以上,于是猜测是线程阻塞的问题。然后又发现从14号开始的每个周六延迟到了10点半,仔细回想了一下查看了下代码提交记录,在12号我新开了两个周六早上的定时同步任务。spring的定时任务默认是单线程的,他在某些场景下会造成堵塞,此时,我的应该是任务过多被阻塞延迟执行了。多线程走起~
使用@Async
我们可以使用Spring的@Async注解十分容易的实现多线程的任务执行。
测试代码:
@Scheduled(cron = "0/2 * * * * ?")
@Async
public void doTask() throws InterruptedException {
logger.info(Thread.currentThread().getName()+"===task run");
Thread.sleep(6*1_000);
logger.info(Thread.currentThread().getName()+"===task end");
}
结果日志
2019-12-30 16:0
还没有评论,来说两句吧...