Spring定时任务

Spring自带的Scheduled Task是一个轻量级的定时任务调度器。

要使用首先要使用@EnableScheduling注解 再在Spring中bean的方法上加上@Scheduled

@Scheduled注解可以配上cron表达式,或者fixedRate,fixedDelay. fixedRate是任务开始时间的间隔时间,fixedDelay是任务结束时间与下一个任务开始时间之间的间隔时间。

默认情况下Spring使用单线程的线程池处理定时任务,因此之前配置的定时规则有可能会被违反。如果需要配置多线程执行,则简单配置一下Configuration即可,如下所示:

@Configuration
//所有的定时任务都放在一个线程池中,定时任务启动时使用不同都线程。
public class ScheduleConfig implements SchedulingConfigurer {
    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        //设定一个长度10的定时任务线程池
        taskRegistrar.setScheduler(Executors.newScheduledThreadPool(10));
    }
}
Written on December 28, 2018