如何在javaspring中立即执行@Scheduled方法,然后根据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,但我假设这是一个示例

最新更新