SpringBoot实现定时任务-@Scheduled

avatar
作者
猴君
阅读量:0

在Java编程中,@Scheduled 注解是 Spring Framework 提供的一个用于定时任务的注解

@Scheduled可以将一个方法配置为定时执行的任务

以下是一些基本用法:

1.固定速度

  • fixedRate指两次任务的开始时间间隔。
  • 所以存在第二次任务开始时,第一次任务可能还没结束。
// 每5秒执行一次任务 @Scheduled(fixedRate = 5000) public void fixedRateTask() {     System.out.println("fixedRateTask: The time is now " + new Date()); } 

2.固定延迟

  • fixedDelay指本次任务结束到下次任务开始之间的时间间隔。
// 在上一次任务执行完成后,延迟5秒执行下一次任务。 @Scheduled(fixedDelay = 5000) public void fixedDelayTask() {     System.out.println("fixedDelayTask: The time is now " + new Date()); } 

3.初始延迟

  • initialDelay指首次任务启动的延迟时间。
// 应用启动后延迟1秒开始执行任务,之后每5秒执行一次。 @Scheduled(initialDelay = 1000, fixedRate = 5000) public void initialDelayTask() {     System.out.println("initialDelayTask: The time is now " + new Date()); } 

4.cron 表达式

使用 cron表达式来定义任务的执行时间。

// 每分钟执行一次。 @Scheduled(cron = "0 * * * * ?") public void cronTask() {     System.out.println("cronTask: The time is now " + new Date()); } 

@EnableScheduling

使用 @Scheduled 注解时,需要配置@EnableScheduling 注解,配置后Spring 的调度器会检测并自动管理定时任务的执行。

注意:时间单位是毫秒

@EnableScheduling @Configuration public class ScheduledConfig { }  Component public class ScheduledTasksTest {     // 每5秒执行一次任务     @Scheduled(fixedRate = 5000)     public void fixedRateTask() {         System.out.println("fixedRateTask: The time is now " + new Date());     }      // 在上一次任务执行完成后,延迟5秒执行下一次任务。     @Scheduled(fixedDelay = 5000)     public void fixedDelayTask() {         System.out.println("fixedDelayTask: The time is now " + new Date());     }      // 应用启动后延迟1秒开始执行任务,之后每5秒执行一次。     @Scheduled(initialDelay = 1000, fixedRate = 5000)     public void initialDelayTask() {         System.out.println("initialDelayTask: The time is now " + new Date());     }      // 每分钟执行一次。     @Scheduled(cron = "0 * * * * ?")     public void cronTask() {         System.out.println("cronTask: The time is now " + new Date());     } } 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!