springboot实现定时任务
springboot支持使用@Scheduled直接实现定时任务
必要
在启动类或者使用定时任务的类上增加
@EnableScheduling
只需要将@Scheduled注解加载想要定时执行的方法之上
@Scheduled(cron = "*/5 * * * * ?")
public void test() {
long startTime = System.currentTimeMillis();
log.info(Thread.currentThread().getName() + ":开始");
//定时任务
long endTime = System.currentTimeMillis();
log.info(Thread.currentThread().getName() + ":结束耗时:" + (endTime - startTime));
}
Scheduled注解支持三种方式的配置
- fixedRate = 5000(任务执行开始—任务执行开始间隔时间)
- fixedDelay = 5000(任务执行结束—任务执行开始间隔时间)
- cron = “*/5 * * * * ?”
cron表达式
常见用法:
- cron = “*/5 * * * * ?”(每个5秒执行一次)
- cron = “0 0 23 * * ?”(每天23:00执行一次)
此定时任务是单线程执行,可以使用spring线程池进行多线程定时任务的优化