SpringBoot 定时任务 @Scheduled 详细解析

SpringBoot 定时任务 @Scheduled 详细解析

@Scheduled

@Scheduled是Spring框架提供的一个注解,用于在Spring应用中定义定时任务。通过使用 @Scheduled注解,可以简化配置和管理定时任务流程,无需编写复杂的调度逻辑。

启动定时任务

在使用 @Scheduled注解之前,需要在Spring配置类中启用定时任务支持。通常在Spring Boot应用的主配置类上添加 @EnableScheduling注解。

定义定时任务

在需要执行定时任务的方法前,自定义@Scheduled的调度策略

1. cron (常用)

使用Cron表达式来指定调度时间。Cron表达式是一个字符串,用于定义任务的执行时间。
cron表达式格式

秒 分 时 日 月 周 年(可选)

例如:
“0 0 1 * * ?”:每天凌晨1点执行。
“0 0/5 * * * ?”:每5分钟执行一次。
“0 0 12 ? * WED”:每周三中午12点执行。

@Scheduled(cron = "0 0 1 * * ?")
public void cronTask() {
    System.out.println("Cron task - " + System.currentTimeMillis());
}

2. fixedRate

每隔固定的时间间隔执行一次任务。无论上一次任务是否完成,都会在指定的时间间隔后再次启动任务。

@Scheduled(fixedRate = 5000)
public void fixedRateTask() {
    System.out.println("Fixed rate task - " + System.currentTimeMillis());
    try {
        Thread.sleep(3000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

3. fixedDelay

在上一次任务完成后,等待固定的时间间隔再执行下一次任务。

@Scheduled(fixedDelay = 3000)
public void fixedDelayTask() {
    System.out.println("Fixed delay task - " + System.currentTimeMillis());
    try {
        Thread.sleep(2000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

4. initialDelay

首次执行任务前的延迟时间,可以与 fixedRate 或 fixedDelay 一起使用。适用于不想让任务立即执行的情况

@Scheduled(initialDelay = 2000, fixedRate = 5000)
public void initialDelayTask() {
    System.out.println("Initial delay task - " + System.currentTimeMillis());
}

5. zone

用于指定定时任务的时间区域(时区)。这对于跨时区的应用非常重要,因为它确保定时任务在指定的时区中按预期时间执行。就像下面这个例子,每天在北京时间凌晨一点执行,而不是美国中部时间的1点。

@Scheduled(cron = "0 0 1 * * ?", zone = "Asia/Shanghai")
public void scheduledTask() {
    // 任务逻辑
}

6. timeUnit

用于指定时间的间隔单位,默认为 毫秒

  • TimeUnit.NANOSECONDS:纳秒
  • TimeUnit.MICROSECONDS:微秒
  • TimeUnit.MILLISECONDS:毫秒
  • TimeUnit.SECONDS:秒
  • TimeUnit.MINUTES:分钟
  • TimeUnit.HOURS:小时
  • TimeUnit.DAYS:天
@Scheduled(fixedRate = 5, timeUnit = TimeUnit.SECONDS)
public void scheduledTask() {

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骑着猪看大海

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值