J'appelle une méthode client asynchrone en diffusant en continu une liste d'objets. La méthode renvoie Future. Quelle est la meilleure façon de parcourir la liste des contrats à terme retournés après l'appel (afin de traiter les futurs qui viennent en premier)?Le moyen le plus efficace de diffuser sur la liste des contrats à terme
Remarque: Le client asynchrone renvoie uniquement Future non CompletableFuture.
Voici le code:
List<Future<Object>> listOfFuture = objectsToProcess.parallelStream()
.map((object) -> {
/* calling an async client returning a Future<Object> */ })
.collect(Collectors.toList());
Avez-vous regarder dans un CompletionService plutôt que de cartographier les résultats à un tableau? http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CompletionService.html –
Peut-être essayer [CompletionService] (http://docs.oracle.com/javase/7/docs/ api/java/util/concurrent/CompletionService.html)? Voici une [explication] (http://stackoverflow.com/a/19348417/6785649). –
Le 'CompletionService' est tout à fait inutile si vous n'avez pas le contrôle sur le code qui produit le' Future'/soumet le travail à un 'Executor'. – Holger