我想使用cron表达式使用@schedule批注计划多个任务。我有三个工作需要在固定的时间执行。例如,作业1每天计划在11:PM进行,作业2每天计划在上午7点至9 PM以1小时的间隔进行,而作业3则被安排在每1个小时以内。所有3个计划任务都是同一应用程序的一部分。

我已经尝试过相同的方法,但是所有三个调度都没有发生。我的应用程序是SpringBoot应用程序。我不是新的日程安排。请帮帮我。下面是他我的做法

application.properties

cron.expression.job1=0 0 23 * * ?
cron.expression.job2=0 0 7,9 * * ?
cron.expression.job3=0 0/60 * * ?


Java代码

 @EnableScheduling
 @SpringBootApplication
 public class Scheduler{
     // doCallScheduleJob Code
 }

class ScheduleJob{

  @Scheduled(cron="${cron.expression.job1}")
  public sycName1(){
           ///doSomething()
  }

  @Scheduled(cron="${cron.expression.job2}")
  public sycName2(){
           ///doSomething()
  }

  @Scheduled(cron="${cron.expression.job3}")
  public sycName3(){
           ///doSomething()
  }

最佳答案

您应该配置TaskScheduler线程池大小。如果您未配置,则默认大小为1,这意味着spring将逐个执行您的任务。您可以在下面配置TaskScheduler。

@Configuration
@EnableAsync
@EnableScheduling
public class SpringBootConfiguration {

    @Bean
    public Executor getTaskExecutor() {
        return Executors.newScheduledThreadPool(10);
    }
}

07-26 06:59