我想使用 cron 表达式使用 @schedule 注释来安排多个任务。我有三项工作需要在固定时间执行。例如,Job-1 已安排在每天晚上 11:PM,Job-2 已安排在每天上午 7 点至晚上 9 点,间隔为 1 小时,而 Job-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);
}
}
关于java - 如何使用 Spring Boot 通过 cron 表达式调度多个任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42217691/