Это должно сделать это для вас.
@Slf4j
@Configuration
public class TestBean implements SmartInitializingSingleton {
@Inject
TaskScheduler scheduler;
@Bean
public TaskScheduler taskScheduler() {
ThreadPoolTaskScheduler te = new ThreadPoolTaskScheduler();
te.setPoolSize(4);
return te;
}
@Override
public void afterSingletonsInstantiated() {
Arrays.stream(new String[] {"PST", "MST", "CST", "EST"})
.forEach(zone -> {
scheduler.schedule(() -> {
log.info("Zone trigged: {}", zone);
}, new CronTrigger("0 0 2 * * *", TimeZone.getTimeZone(zone)));
});
}
}
Возможно, вы захотите разделить различные проблемы создания компонента планировщика и выполнения задачи.Кроме того, позаботьтесь о том, чтобы выбрать подходящий планировщик, обладающий необходимым параллелизмом в случае, если задание переходит во время запуска следующего задания.