为什么Spring Boot 定时任务是单线程的?
想要解释为什么,一定要从源码入手,直接从@EnableScheduling这个注解入手,找到了这个ScheduledTaskRegistrar类,其中有一段代码如下:
1 | protected void scheduleTasks() { |
如果taskScheduler为null,则创建单线程的线程池:Executors.newSingleThreadScheduledExecutor()
。
也就是说线程调度器设置只有一个线程容量,如果存在多个任务被触发时,会等第一个任务执行完毕才会执行下一个任务。