@EnableScheduling
@Scheduled
默认单线程,串行执行任务,即如果第一个任务没有执行完,则第二个任务阻塞。
- fixedDelay:上次的任务结束的时候开始计时;
- fixedRate:上次的任务开始的时候开始计时;
-
ThreadPoolTaskScheduler
定义一个线程池ThreadPoolTaskScheduler,并通过@Bean注解装配;
- 通过@Bean注解的name属性可以定义线程池的名称;
- 定义线程池后仍然是串行执行任务
@Bean(name = "xxx-task")public ThreadPoolTaskScheduler threadPoolTaskScheduler(){ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();taskScheduler.setPoolSize(Math.max(Runtime.getRuntime().availableProcessors() / 2, 2));return taskScheduler;}
@EnableAsync和@Async
- 类需要加上@EnableAsync注解;
- 方法需要加上@Async注解;
- 此时并行执行任务。
