阅读量: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()); } }