What is `@Scheduled` does?

@Scheduled 是Spring框架中用于定时任务调度的注解,它允许我们在类的方法上声明一个方法作为定时任务,由Spring容器统一管理和执行。使用此注解后,Spring会根据注解中的属性配置,按照指定的时间规则自动调用该方法。

public class ScheduledTask {
    @Scheduled(cron = "0 0/5 * * * ?") // Cron表达式,表示每5分钟执行一次
    public void executeTask() {
        System.out.println("定时任务执行: " + LocalDateTime.now());
        // 在这里编写你需要定时执行的任务逻辑
    }

    // 每隔10秒钟执行一次,不考虑上一次执行是否完成
    @Scheduled(fixedRate = 10000)
    public void executeAtFixedRate() {
        System.out.println("Fixed rate task executed at: " + LocalDateTime.now());
    }

    // 上一次执行完成后,间隔15秒再次执行
    @Scheduled(fixedDelay = 15000)
    public void executeWithFixedDelay() {
        System.out.println("Fixed delay task executed at: " + LocalDateTime.now());
    }

    // 服务启动后延迟30秒开始执行,然后每1分钟执行一次
    @Scheduled(initialDelay = 30000, fixedRate = 60000)
    public void executeWithInitialDelay() {
        System.out.println("Task with initial delay executed at: " + LocalDateTime.now());
    }
}

在这里插入图片描述
Cron 是 Linux 和 Unix 系统上用于定时任务的工具。它通过 Cron 表达式来定义任务的执行时间,并通过计划任务来调度任务的执行。

* * * * * *
| | | | | |
| | | | | ----- 星期(0-7,其中07都代表周日)
| | | | ------- 月份(1-12| | | --------- 日期(1-31| | ----------- 小时(0-23| ------------- 分钟(0-59--------------- 秒  (0-59,默认不使用时可以省略)

0-23 表示“0 到 23”
* 表示“每”
/ 表示“除以”,所以 */3 表示“每 3 小时”。
? 举例理解:在表星期几中,?通常意味着“不论周几”
MON#1 表示每个月的第一个周一

* * * * * *:这意味着这个任务会在每秒钟执行一次。但请注意,Spring Boot定时任务通常不包含秒级精度,而是从分钟开始,因此最小粒度的cron表达式通常是 * * * * *,表示每分钟执行一次。
*/5 * * * * ? :在秒级别,表示每5秒执行一次(尽管标准的Unix cron不支持秒级调度,但在某些如Spring框架的实现中可以支持秒)
0 */1 * * * ?0 0/1 * * * ? 是没有区别的:每隔1分钟执行一次
0 0 1 * * ?:每天凌晨1点执行一次
0 0 0 1 * ? :每月的1号执行,而不在乎是周几
0 0 1 1 * ?:每月1号凌晨1点执行:

你可能感兴趣的:(注解,java)