Hello,
Je voudrais utiliser des threads pour executer une fonction, mais comment faire pour récupérer le résultat de cette fonction? Avec un accesseur? Mais dans ce cas comment savoir quand le thread est terminé? Un example?
Merci, A+
Hello,
Je voudrais utiliser des threads pour executer une fonction, mais comment faire pour récupérer le résultat de cette fonction? Avec un accesseur? Mais dans ce cas comment savoir quand le thread est terminé? Un example?
Merci, A+
Bonjour,
j'ai trouvé çà sur le forum code retour thread
a+
Ok, merci! Existe il un truc du genre mais pas pour les classes anonymes?
Merci, A+
Tu peux effectivement t'en sortir avec une classe personnelle maintenant la valeur du résultat. Cette classe devra évidemment implémenter Runnable ou étendre la classe Thread...
Tu crées sur ta classe un accesseur pour récupérer le résultat.
Dans la classe qui doit récupérer ce résultat, tu peux savoir si le calcul est fini ou non grâce à la méthode isAlive() de la classe Thread. Ainsi, dès que celle-ci renvoie 'false', tu sais que le calcul est fini et que tu peux récupérer/utiliser le résultat.
Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
Mes articles et tutoriaux & Mon blog informatique
Il faut appliquer les règles de programmation multiThreadée ou parallèle: est-ce que tu veux synchroniser tes Thread? ou les données, et afficher le résultat par "polling": checker régulièrement si le traitement est terminé.
Dans le 1er cas, utiliser un "join" pour attendre la fin de l'exécution du Thread, ou des verrous posés avec wait/notify (il doit y avoir des tutoriaux plus explicites que moi sur ce vaste sujet)
dans le 2ème: tu peux simplement synchroniser les méthodes de getters, et ajouter un flag "terminé" que tu place manuellement à la fin du Thread.
Ok, ca devient plus clair... Mais imaginons le cas suivant:
Je recoit une string contenant toutes les ips. Je créée les threads et attend qu'ils soient terminés. Mais comment je fais pour y accéder? Je dois déclarer chaque thread dans une variable pour y accéder par la suite?
Dionc le mieux serait de faire une liste de threads pour y a ccéder par la suite quelque soit le nombre qu'il y en ait?
Merci, A+
Ou alors tu utilises Future<T>. Avec un get(), tu récupères le résultat, et la méthode est bloquante jusqu'à ce que la tâche soit terminée...
C'est pris en compte par un ExecutorService... (pool de thread)
Partager