@Scheduled注解创建定时任务的 3 种模式

@Scheduleed注解的介绍

在Spring Boot中,@Scheduled 注解用于创建定时任务,提供了三种常见的模式:

Fixed Rate(固定速率)

Fixed Delay(固定延迟)

Cron Expression(Cron表达式)

1、Fixed Rate(固定速率):

在这种模式下,任务会按照固定的时间间隔执行,无论前一个任务是否完成。这意味着无论任务执行多久,下一个任务都会在指定的时间间隔后启动。

例如,如果将间隔设置为1分钟,那么无论上一个任务执行了多长时间,下一个任务都会在1分钟后启动。

@Scheduled(fixedRate = 5000)
public void fixedRateTask() {
    // 定时任务的逻辑
}

2、Fixed Delay(固定延迟):

在这种模式下,任务会在上一个任务完成后延迟固定的时间间隔后再执行。这意味着任务会等待上一个任务完成后再启动下一个任务。

例如,如果将延迟设置为1分钟,那么下一个任务会在上一个任务完成后的1分钟后启动。

@Scheduled(fixedDelay = 5000)
public void fixedDelayTask() {
    // 定时任务的逻辑
}

3、Cron Expression(Cron表达式):

这种模式允许使用Cron表达式指定更复杂的定时规则。Cron表达式是一种时间表达式,它允许指定任务应该在何时执行,例如每天的某个特定时间、每周的某一天或每月的某一天。

例如,可以使用Cron表达式指定任务在每天的午夜执行,或者每周的星期一早上9点执行。

@Scheduled(cron = "0 0 12 * * ?")
public void cronTask() {
    // 定时任务的逻辑
}

4、模式选择

这些模式之间的选择取决于您的需求。

如果需要确保任务在固定的时间间隔内运行,而不考虑前一个任务是否完成,则可以使用固定速率。

如果需要任务在上一个任务完成后固定的延迟时间后再次运行,则可以使用固定延迟。

而如果需要更灵活的定时规则,则可以使用Cron表达式。

注意:启用定时任务, 需要在SpringBoot启动类上使用 @EnableScheduling 注解

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
@EnableScheduling // 启用定时任务支持
public class MyApplication {

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

相关推荐

  1. @Scheduled注解创建定时任务 3 模式

    2024-06-08 09:52:06       9 阅读
  2. 【Spring Boot 3】【@Scheduled】静态定时任务

    2024-06-08 09:52:06       37 阅读
  3. 【Spring Boot 3】【@Scheduled】动态新增定时任务

    2024-06-08 09:52:06       36 阅读
  4. 【Spring Boot 3】【@Scheduled】动态删除定时任务

    2024-06-08 09:52:06       40 阅读
  5. 【Spring Boot 3】【@Scheduled】多线程执行定时任务

    2024-06-08 09:52:06       35 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-08 09:52:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-08 09:52:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-08 09:52:06       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-08 09:52:06       20 阅读

热门阅读

  1. 2020年06月C语言二级真题

    2024-06-08 09:52:06       9 阅读
  2. npm run *** 上传 dist 到 github

    2024-06-08 09:52:06       9 阅读
  3. 基于vue3实现倒计时60s的

    2024-06-08 09:52:06       8 阅读
  4. PostgreSQL的视图pg_stat_user_indexes

    2024-06-08 09:52:06       9 阅读
  5. 软光敏的程序实现

    2024-06-08 09:52:06       8 阅读
  6. 电商API在实现后端系统集成中的关键作用

    2024-06-08 09:52:06       8 阅读