Auditeur de fin de thread. Java
Existe-il des Auditeurs en Java pour gérer ce fil ont été terminés?
Quelque chose comme ceci:
Future<String> test = workerPool.submit(new TestCalalble());
test.addActionListener(new ActionListener()
{
public void actionEnd(ActionEvent e)
{
txt1.setText("Button1 clicked");
}
});
Je sais, qu'il est impossible de s'occuper de ce genre, mais je veux être averti lorsqu'un thread terminé.
D'habitude j'ai utilisé pour cette classe Timer avec la vérification de l'état de chaque Futur. mais elle n'est pas jolie.
Grâce
source d'informationauteur Denis
Vous devez vous connecter pour publier un commentaire.
Il est CompletionService vous pouvez utiliser.
Une autre alternative est d'utiliser ListenableFuture de Goyave.
Exemple de Code:
Personnellement, j'ai comme la Goyave meilleure solution.
Vous pouvez mettre en œuvre Observateur Modèle de rapport d'achèvement.
Laisser le Thread appelant implémenter cette interface.
et dans la méthode run() vous appelez cette méthode à la fin. Donc maintenant on sait exactement quand ce fil va fin.
De l'essayer. Je suis en fait en utilisant cela et cela fonctionne très bien.
Ici est un tu chinois auditeur. Très unadvisible à l'utiliser, mais, drôle et intelligent
L'effet peut être réalisée via PhantomRefernce mieux
espère que vous avez un petit sourire 🙂
Note de côté: ce que vous demandez est PAS le bout du filmais l'achèvement de la tâche de l'événement et le meilleur est primordial soit
decorateTask
ouafterExecute
Sans ajouter beaucoup de code supplémentaire, vous pouvez faire un rapide thread d'écoute de vous-même comme suit:
Pas. Ces auditeur ne doit pas exister.
Mais vous avez 2 solutions.
run()
méthodeCallable
interface qui renvoie un résultat de typeFuture
. Vous pouvez demander à l'Avenir ce que le statut et l'utilisation bloqué méthodeget()
pour récupérer le résultatVous avez une méthode join() définie par la classe Thread pour ça. Cependant, vous n'avez pas de visibilité directe à un thread de l'exécution de votre Appelable dans la simultanéité cas de l'API..