I try to run several scheduled tasks at the same time when spring boots, but in practice they start the sequence (one by one, not parallel)
This is my simple service:
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; @Service public class MyScheduleDemo { @Scheduled(fixedDelay = 5000, initialDelay = 1000) public void taskA() throws InterruptedException { System.out.println("[A] Starting new cycle of scheduled task");
Output:
[A] Starting new cycle of scheduled task [A] Done the cycle of scheduled task [B] Starting new cycle of scheduled task [B] Done the cycle of scheduled task
But, it should be like:
[A] Starting new cycle of scheduled task [B] Starting new cycle of scheduled task [B] Done the cycle of scheduled task [A] Done the cycle of scheduled task
What am I doing wrong?
This is my configuration:
@Configuration @EnableAsync @EnableScheduling public class AsyncConfiguration implements AsyncConfigurer { @Override @Bean(name = "taskExecutor") public Executor getAsyncExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(6); executor.setMaxPoolSize(50); executor.setQueueCapacity(100); executor.setThreadNamePrefix("customer-Executor-"); executor.initialize(); return executor; } }
source share