结论
定时任务是单线程执行的,默认一个时间段只能执行一个定时任务
如果多个定时任务同时执行的话,那么会按照顺序执行
代码
在启动类中加上以下代码
1 | //创建定时任务线程池 |
测试
用例一
一个Job,两个任务
task1每5s执行一次,每次执行耗时10s
task2每5s执行一次,每次执行耗时10s
代码
结果
用例二
两个Job,每个Job中各一个任务
task1每5s执行一次,每次执行耗时10s
task3每7s执行一次,每次执行耗时10s
代码
结果
用例三
一个Job,两个任务
task1每5s执行一次,每次执行耗时10s
task2每7s执行一次,每次执行耗时10s
代码
结果
另一种方案
使用@Async注解实现异步任务
注意:需启动类配合加上 @EnableAsync才会生效
同一个task也不会阻塞,不建议使用