如何立即执行java Spring中的@Scheduled方法,然后根据cron?
How to execute a @Scheduled method in java Spring immediately and then according to cron?
我有一个方法:
@Scheduled(cron="0 */5 * * * *")
public void syncRoutine() { }
所以它 运行 每 5 分钟。
是否可以先安排一个方法到 运行 然后根据 cron?
您可以将多个 @Scheduled
注释与 @Schedules
注释组合:
@Schedules(value = {
@Scheduled(initialDelay = 15_000,
fixedDelay = Long.MAX_VALUE),
@Scheduled(cron = "0 */5 * * * *")
})
public void scheduleFixedDelayTask() {
System.out.println("Fixed delay task - " +
System.currentTimeMillis() / 1000);
}
任务将在 initialDelay
(15 秒)值后第一次执行。我们让 fixedDelay = Long.MAX_VALUE
无法重复,因为让 cron 来做。
OR
您可以同时使用 @PostConstruct
和 @Scheduled
注释:
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@Component
public class ScheduleClass {
@PostConstruct
public void onStartup() {
scheduleFixedDelayTask();
}
@Scheduled(cron = "0 */1 * * * *")
public void scheduleFixedDelayTask() {
System.out.println("Fixed delay task - " +
System.currentTimeMillis() / 1000);
}
}
通常情况下,您不需要为每 5 分钟 运行 的任务添加 cron,但我假设这是一个示例。
我有一个方法:
@Scheduled(cron="0 */5 * * * *")
public void syncRoutine() { }
所以它 运行 每 5 分钟。
是否可以先安排一个方法到 运行 然后根据 cron?
您可以将多个 @Scheduled
注释与 @Schedules
注释组合:
@Schedules(value = {
@Scheduled(initialDelay = 15_000,
fixedDelay = Long.MAX_VALUE),
@Scheduled(cron = "0 */5 * * * *")
})
public void scheduleFixedDelayTask() {
System.out.println("Fixed delay task - " +
System.currentTimeMillis() / 1000);
}
任务将在 initialDelay
(15 秒)值后第一次执行。我们让 fixedDelay = Long.MAX_VALUE
无法重复,因为让 cron 来做。
OR
您可以同时使用 @PostConstruct
和 @Scheduled
注释:
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@Component
public class ScheduleClass {
@PostConstruct
public void onStartup() {
scheduleFixedDelayTask();
}
@Scheduled(cron = "0 */1 * * * *")
public void scheduleFixedDelayTask() {
System.out.println("Fixed delay task - " +
System.currentTimeMillis() / 1000);
}
}
通常情况下,您不需要为每 5 分钟 运行 的任务添加 cron,但我假设这是一个示例。