Était-ce utile?

La solution

Vous pouvez réutiliser le planificateur, mais vous ne devriez pas arrêter cela. Au contraire, annuler le fil conducteur que vous pouvez obtenir lors de l'appel de méthode scheduleAtFixedRate. Ex:

//get reference to the future
Future<?> future = service.scheduleAtFixedRate(runnable, INITIAL_DELAY, INTERVAL, TimeUnit.SECONDS)
//cancel instead of shutdown
future.cancel(true);
//schedule again (reuse)
future = service.scheduleAtFixedRate(runnable, INITIAL_DELAY, INTERVAL, TimeUnit.SECONDS)
//shutdown when you don't need to reuse the service anymore
service.shutdown()

Autres conseils

Les javadocs shutdown() disent:

Initiates an orderly shutdown in which previously submitted tasks are executed,
but no new tasks will be accepted.

Alors, vous ne pouvez pas appeler shutdow() et ensuite planifier de nouvelles tâches.

Vous ne pouvez pas faire votre exécuteur testamentaire accepter de nouvelles tâches après la fermeture. La question plus pertinente est la raison pour laquelle vous avez besoin de le fermer en premier lieu? Les exécuteurs vous créez devraient être réutilisés dans la durée de vie de votre application ou sous-système.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top