SpringBoot 多线程执行定时任务实验

一,默认行为,全部定时任务使用同一个线程执行

SpringBoot 多线程执行定时任务实验
SpringBoot 多线程执行定时任务实验
可以看出定时任务2只能在定时任务1结束之后才开始,因为所有的定时任务使用同一个线程执行

二,实现SchedulingConfigurer接口,不同定时任务使用不同线程执行

SpringBoot 多线程执行定时任务实验
SpringBoot 多线程执行定时任务实验
结果是定时任务2每秒都会执行一次,不用等定时任务1了,但是还有不足的地方,定时任务1如果未执行结束,无法进行下一次定时任务1,原因是只有一个线程执行定时任务1

三,注册TaskScheduler实例,使用@EnableAsync,@Async注解,相同定时任务可以使用不同线程

SpringBoot 多线程执行定时任务实验
SpringBoot 多线程执行定时任务实验
结果是定时任务1每经过一秒钟执行一次,不需要等待上一次执行结束