java - pom - ¿Cuál es el tamaño de la agrupación del programador predeterminado en Spring-Boot?
spring boot vs spring mvc español (1)
Estoy usando spring-boot
y @Scheduled
Anotación programada para ejecutar algunas tareas.
¿Cómo puedo averiguar cuál es el tamaño de grupo predeterminado de tareas programadas por defecto en spring-boot?
Motivo: la siguiente clase no ejecuta los trabajos en paralelo, sino uno después del otro. ¿Tal vez solo un ejecutor de un solo hilo está configurado por defecto?
@Service
public class ZipFileTesterAsync {
@Scheduled(fixedDelay = 60000, initialDelay = 500)
public void run() throws Exception {
System.out.println("import 1");
TimeUnit.MINUTES.sleep(1);
System.out.println("import 1 finished");
}
@Scheduled(fixedDelay = 60000, initialDelay = 1000)
public void run2() throws Exception {
System.out.println("import 2");
TimeUnit.MINUTES.sleep(1);
}
}
Resultado: el segundo trabajo se ejecuta después de la primera finalización.
Sí, todos los métodos @Scheduled
comparten un solo hilo de forma predeterminada. Es posible anular este comportamiento definiendo una @Configuration
como esta:
@Configuration
public class SchedulingConfigurerConfiguration implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
taskScheduler.setPoolSize(100);
taskScheduler.initialize();
taskRegistrar.setTaskScheduler(taskScheduler);
}
}
Este ejemplo garantiza que todos los métodos @Scheduled
compartan un grupo de subprocesos de tamaño 100.