Qu'est-ce que la valeur par défaut planificateur de la taille du pool au printemps-boot?
Je suis en utilisant spring-boot
et @Scheduled
annotation pour exécuter certaines tâches.
Comment puis-je connaître la valeur par défaut de la taille du pool de tâches planifiées est par défaut dans spring-boot?
Raison: la classe suivante ne pas exécuter les jobs en parallèle, mais l'un après l'autre. Peut-être seulement un seul thread exécuteur testamentaire est configuré par défaut?
@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);
}
}
Résultat: la 2e tâche est exécutée après la première terminée.
- Peut-être que ce Printemps de documentation pourrait aider à résoudre votre problème.
Vous devez vous connecter pour publier un commentaire.
Oui, tous les
@Scheduled
méthodes de partager un seul thread par défaut.Il est possible de remplacer ce comportement par la définition d'un
@Configuration
comme ceci:Cet exemple s'assure que tous les
@Scheduled
méthodes de partager un pool de threads de taille 100.ScheduledAnnotationBeanPostProcessor
). Pour être en mesure de planifier des tâches pour les différents pools de threads, il suffit de créer un autre piscines avec built-in Javajava.util.concurrent.Executors
.