springboot实现定时任务 基于@Scheduled注解

2022-10-29 10:15:32

在平常的开发工作中,我们经常会用到定时任务,比如定时刷新数据,定时去执行某个业务操作,定时任务,我们经常使用,那么springboot可以怎样实现定时任务呢?

1:创建定时任务:方法上添加@Scheduled注解,定义执行频率,如@Scheduled(fixedRate = 1000)

@Component
public class ScheduledTask {
    
    @Scheduled(fixedRate = 1000)
    public void scheduledTest() {
        // 打印时间
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
        System.out.println(sdf.format(new Date()));
    }
}


2:创建启动类:在启动类上面添加@EnableScheduling注解,配置在启动类上,开启对计划任务的支持。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
 
@SpringBootApplication
@EnableScheduling
public class SpringbootApplicationTest {
 
    public static void main(String[] args) {
        SpringApplication.run(SpringbootApplicationTest.class, args);
    }
}


3:启动项目:看控制台打印时间

@Scheduled注解参数说明

参数说明示例
cron任务执行的cron表达式 0/2 * * * * ?
zonecron表达时解析使用的时区,默认为服务器的本地时区。
使用java.util.TimeZone#getTimeZone(String)方法解析
GMT-8:00
fixedRate固定速率
上一次任务执行开始到下一次执行开始的间隔时间固定,单位为ms。
若在调度任务执行时,上一次任务还未执行完毕,会加入worker队列,等待上一次执行完成后,马上执行下一次任务
1000
fixedRateString与fixedRate一致,只是间隔时间使用java.time.Duration#parse解析1000或PT1S
fixedDelay固定延迟
上一次任务执行结束到下一次执行开始的间隔时间固定,单位为ms。
1000
fixedDelayString与fixedDelay一致,只是间隔时间使用java.time.Duration#parse解析1000或PT1S
initialDelay首次延迟多长时间后执行,单位ms。
之后按照fixedRate、fixedRateString、fixedDelay、fixedDelayString指定的规则执行,需要指定其中一个规则。
注意:不能和cron一起使用
1000
initialDelayString与initialDelay 一致,只是间隔时间使用java.time.Duration#parse解析1000或PT1S



  • 作者:辰小白
  • 原文链接:https://blog.csdn.net/qq493820798/article/details/126303585
    更新时间:2022-10-29 10:15:32