У меня есть список подписавшихся объектов.Для каждого из этих подписантов мне нужно сделать запрос ReST, чтобы получить их подписывающий URL.Я пытаюсь сделать это с помощью завершаемых вариантов будущего, чтобы все запросы ReST можно было отправлять параллельно, затем мне нужно установить этот URL-адрес для каждого из подписавших, чтобы эта операция не возвращала новых подписчиков, а только обновляла те, которые я уже выполняю.
У меня есть этот код, который уже работает, но я думаю, что он может быть улучшен.
List<Signer> signers=......
List<CompletableFuture> futures = signers.stream()
.map(signer -> CompletableFuture.completedFuture(signer))
.map(future -> future.thenCombine( CompletableFuture.supplyAsync(()-> signatureService.getSigningUrl(future.join().getSignerId())),
(signer, url) -> {
signer.setUrl(url);
return url;
}
)).collect(toList());
futures.stream()
.map(CompletableFuture::join)
.collect(toList());
Могу ли я заменить этот
futures.stream()
.map(CompletableFuture::join)
.collect(toList());
этим?
futures.stream().forEach(CompletableFuture::join)
Я не хотел бы возвращать это, потому что это уже использовалось, устанавливая это в подписывающем лице.и мне не нравится второй collect(toList())
, потому что я не пытаюсь собрать что-то в это время.
Какую другую реализацию вы бы использовали?