J'ai besoin de planifier une tâche à exécuter à intervalle de temps fixe. Comment puis-je faire cela avec le support de longs intervalles (par exemple toutes les 8 heures)?
J'utilise actuellement java.util.Timer.scheduleAtFixedRate
. Supporte-t-il de java.util.Timer.scheduleAtFixedRate
longs intervalles de temps?
TimeUnit
s'applique à la fois auinitialDelay
et auperiod
. Exécution de toutes les 24 heures finir par être jeté quand l' heure d' été à coups de pied, maisTimeUnit
deDAYS
ne vous permet pas de spécifier un grain fininitialDelay
. (Je pense que l'implémentation interne ScheduledExecutorService se convertitDAYS
de toute façon en nanosecondes).Vous devriez jeter un oeil à Quartz c'est un framework java qui fonctionne avec les éditions EE et SE et permet de définir des jobs pour exécuter un temps spécifique
la source
Essayez de cette façon ->
Commencez par créer une classe TimeTask qui exécute votre tâche, cela ressemble à:
puis dans la classe principale, vous instanciez la tâche et l'exécutez périodiquement à une date spécifiée:
la source
Utilisez Google Guava
AbstractScheduledService
comme indiqué ci-dessous:}
Si vous avez plus de services comme celui-ci, alors l'enregistrement de tous les services dans ServiceManager sera bon car tous les services peuvent être démarrés et arrêtés ensemble. Lisez ici pour en savoir plus sur ServiceManager.
la source
Si vous souhaitez vous en tenir
java.util.Timer
, vous pouvez l'utiliser pour planifier à de grands intervalles de temps. Vous passez simplement dans la période pour laquelle vous tirez. Consultez la documentation ici .la source
Ces deux classes peuvent travailler ensemble pour planifier une tâche périodique:
Tâche planifiée
Exécuter la tâche planifiée
Référence https://www.mkyong.com/java/how-to-run-a-task-periodically-in-java/
la source
Si votre application utilise déjà le framework Spring, la planification est intégrée
la source
Faites quelque chose toutes les secondes
la source
J'utilise la fonctionnalité de Spring Framework. ( jar de contexte de printemps ou dépendance maven).
ScheduledTask est ma propre interface avec ma méthode personnalisée execute , que j'appelle comme tâche planifiée.
la source
Avez-vous essayé Spring Scheduler en utilisant des annotations?
vous pouvez également le faire avec xml.
la source
mon servlet contient ceci comme code comment le garder dans le planificateur si un utilisateur appuie sur accepter
la source