首页 > 解决方案 > 如何在启动时运行方法并根据 cron 表达式进行调度并避免并行执行

问题描述

我想每天 14:00 开始工作。我还想在应用程序启动后运行该作业。这项工作足够长(假设是 10 分钟),我担心如果启动发生在 13:58 会发生什么。我想禁止并发任务执行。

下面的工作吗?

@Scheduled(cron = "0 14 * * *")
public void scheduleTaskUsingCronExpression() {
  jobMehod();        
}
public synchronized void jobMehod(){
  // code wihout creation new threads
}
@EventListener(ContextRefreshedEvent.class)
public void onStartup(){
    jobMehod();
}

标签: javaspringquartz-schedulerstartupspring-scheduled

解决方案


synchronized如果使用默认的 spring 调度程序,则不需要使用方法。

它是单线程的,因此一次不会运行多个计划任务。


推荐阅读