Il y a des réponses sur Ainsi, mais je cherche une solution à l'aide de mon code pour une compréhension claire.
J'ai créé des threads de travailleurs à l'aide d'exécutants et après avoir effectué des travaux, les travailleurs doivent retourner les résultats à la Appelant (Main) P>
Travailleur strong> P> public class WorkerTest {
private static List<String> result = new ArrayList<>();
public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(5);
for (int i = 0; i < 10; i++) {
Runnable worker = new Worker(i);
executorService.execute(worker);
}
executorService.shutdown();
while(!executorService.isTerminated());
}
}
3 Réponses :
au lieu de mettre en œuvre exécutable code> vous devez implémenter
appelable code>
puis utilisez une méthode renvoyant un futur code>
Pouvez-vous s'il vous plaît fournir une réponse en utilisant mon exemple de code, je ne peux pas envelopper ma tête autour de elle
Merci, j'apprécie, je l'obtiens, je peux le modifier pour avoir 10 soumissions et attendre tous les 10 à compléter, c'est là que l'ensemble de l'image sera évidente.
> Je ne peux pas envelopper ma tête autour de [Futures]. P>
Peut-être qu'un bref aperçu du rideau aiderait P>
futur code> est une interface, mais il existe une classe de bibliothèque standard, dont nous ne savons pas le nom que nous ne savons pas que
Implémente l'avenir code>. Prétendons que c'est appelé
fuduImpl code>. P>
Voici votre code complet
Classe publique Workertest {
Résultat de la liste statique privée = nouveau arraylist <> (); } p> ou vous pouvez faire de cette façon si vous souhaitez stocker des résultats dans la liste. P>
Voir dzone.com/articles/.../a>