45 votes

Comment un thread peut-il retourner une valeur après avoir terminé son travail ?

Disons que nous avons cet exemple simple:

Comment le Thread après avoir terminé son travail peut-il me rendre la température de la corde?

65voto

TofuBeer Points 32441

Utilisez le (relativement) `` nouveau au lieu de Runnable.

Voici un (simple) exemple :

12voto

Paul McKenzie Points 4841

Regardez l'interface Future javadoc. Il a l'utilisation de l'échantillon vous montrant comment le faire.

8voto

Redlab Points 1647

Vous pouvez y parvenir par le modèle Observateur. sur la finition du fil informe tous les auditeurs qu'il est terminé et ils peuvent récupérer la valeur (par un getter). Ou il peut même déjà envoyer la valeur calculer.

Ou vous pouvez utiliser une tâche, voir FutureTask, un runnable ( en effet comme indiqué ci-dessous un Callable ) qui renvoie un résultat et peut lancer des exceptions.

0voto

Sai Sunder Points 392

Implémenter l'interface callable. La méthode d'appel dans cette interface fonctionne comme la méthode d'exécution, mais peut retourner une valeur. Voir mon blog http://preciselyconcise.com/java/concurrency/d_return_value_from_thread.php pour une démo

0voto

Martin Points 140

Si vous ne souhaitez pas échanger la solution pour utiliser des objets Callable, vous pouvez également utiliser des files d'attente et renvoyer le résultat des threads de cette façon.
J'ai réécrit votre exemple comme ceci:

Notez que vous penserez à la synchronisation et à la concurrence!

Prograide.com

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.

Powered by:

X