Je me demande ce qui se passe si je planifie une méthode Bean avec @Scheduled, disons toutes les heures, mais que l'exécution de la méthode prend en fait plus d'une heure.
L'exécution sera-t-elle terminée ?
Je me demande ce qui se passe si je planifie une méthode Bean avec @Scheduled, disons toutes les heures, mais que l'exécution de la méthode prend en fait plus d'une heure.
L'exécution sera-t-elle terminée ?
Non, il n'y a pas de mécanisme qui met fin à votre fil. Si le fil fonctionne "trop longtemps", c'est votre problème :-).
Remarque : vous pouvez utiliser l'annotation @Scheduled(fixedDelay=xxx)
pour ne commencer un nouveau fil que lorsque l'ancien fil est terminé. Cela permettrait d'éviter le problème de l'exécution de plusieurs fils en parallèle. Cependant, un fil qui tourne trop longtemps (ou même qui est suspendu) peut bien sûr encore causer d'autres problèmes.
Si vous craignez qu'un fil ne prenne trop de temps, vous devrez y remédier dans votre code. Il n'y a pas d'autre moyen - le framework/runtime n'a aucun moyen de savoir combien de temps est "trop long", et même s'il le savait, il n'a aucun moyen de savoir comment terminer correctement votre thread. Il pourrait simplement le tuer, bien sûr, mais il est peu probable que ce soit une bonne solution (cf. le désordre à propos Thread.stop()
).
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.