我有一個方法:
@Scheduled(cron="0 */5 * * * *")
public void syncRoutine() { }
所以它每5分鐘運行一次。
是否可以安排一個方法在第一次立即運行,然后根據 cron 運行?
uj5u.com熱心網友回復:
您可以將多個@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,但我假設這是一個示例。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/452755.html
