Wywołuję metodę klienta asynchronicznego, przesyłając strumieniowo listę obiektów. Metoda zwraca Future.Najbardziej efektywny sposób przesyłania strumieniowego na liście kontraktów Futures
Jaki jest najlepszy sposób na powtórzenie listy Futures zwróconych po zakończeniu połączenia (aby przetworzyć te Future, które są pierwsze)?
Uwaga: Klient asynchroniczny zwraca tylko wartość Future not CompletableFuture.
Poniżej znajduje się kod:
List<Future<Object>> listOfFuture = objectsToProcess.parallelStream()
.map((object) -> {
/* calling an async client returning a Future<Object> */ })
.collect(Collectors.toList());
Czy patrzysz w użyciu CompletionService zamiast mapowania wyniki do tablicy? http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CompletionService.html –
Być może spróbuj [CompletionService] (http://docs.oracle.com/javase/7/docs/ api/java/util/concurrent/CompletionService.html)? Oto [wyjaśnienie] (http://stackoverflow.com/a/19348417/6785649). –
"Usługa Completion" jest zupełnie bezużyteczne, jeśli nie masz kontroli nad kodem, który produkuje 'Przyszłość'/przesyła pracę do' Executora'. – Holger