在启动类上使用@EnableScheduling注解开启对定时任务的支持,然后启动项目
可以看到三个定时任务都已经执行,并且使同一个线程中串行执行,如果只有一个定时任务,这样做肯定没问题,当定时任务增多,如果一个任务卡死,会导致其他任务也无法执行。
多线程执行
使用config配置类的方式添加配置
import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import java.util.concurrent.Executor;
/** * Created by MZC on 18-9-7 * @Configuration:表明该类是一个配置类 * @EnableAsync:开启异步事件的支持 * 此处成员变量应该@Value从线程池配置文件中读取 */ @Configuration @EnableAsync public class AsyncConfig { /*核心线程数*/ private int corePoolSize = 10; /*最大线程数*/ private int maxPoolSize = 200; /*队列最大长度*/ private int queueCapacity = 10; public Executor taskExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(corePoolSize); executor.setMaxPoolSize(maxPoolSize); executor.setQueueCapacity(queueCapacity); executor.initialize(); return executor; } }