Java de la classe Timer: timer tâches d'arrêt à exécuter si dans l'une des tâches exception est levée
new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
System.out.println("run");
throw new SomeRandomException();
}
}, 1000, 1000);
De sortie: run (exception est levée)
Voici le problème: j'ai besoin d'une minuterie tâche de vérifier les conditions spécifiques dans la base de données (ou autre chose). Il a bien fonctionné, mais parfois la base de données(ou autre chose) retourne des erreurs, d'une exception est levée et le compteur se bloque, et puis pas de timer unique tâche est exécutée à nouveau. Est-il certain de la Minuterie de mise en œuvre qui continuent de travailler après l'exception est levée dans run()
.
Je peux
new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
try {
System.out.println("run");
throw new SomeRandomException();
} catch (Exception e) {
System.out.println("dummy catch");
}
}
}, 1000, 1000);
mais cela semble boiteux.
Autre alternative est d'écrire ma propre implémentation de la classe Timer, avaler des exceptions de la méthode run (ce qui semble également pas droit).
Error
s et ou ils silencieusement tuer votre tâche.OriginalL'auteur fiction | 2012-01-05
Vous devez vous connecter pour publier un commentaire.
Utiliser un
ScheduledExecutorService
. Il joue le même rôle que la Minuterie, mais fixe ses faiblesses (comme celle que vous avez des).Oui, cette tâche s'arrêter de courir, mais il ne fait pas l'exécuteur de collision, et d'autres tâches sont encore prévues. Mais je suis d'accord que vous avez encore à attraper toutes les exceptions qui peuvent se produire et ne doit pas provoquer la planification de la tâche à être abandonnée. Vous pouvez créer un CatchAllRunnable classe réutilisable.
OriginalL'auteur JB Nizet
À l'aide de
ExecutorService;
vous pouvez gérer à la fois le moment de la compilation et de l'exécution des exceptions.La gestion des exceptions de Java ExecutorService tâches
Comment est la gestion des exceptions faite dans un Callable
OriginalL'auteur Kanagavelu Sugumar