Я играл с CompletionStage/CompletableFuture в Java 8, чтобы выполнить асинхронную обработку, которая работает достаточно хорошо. Однако иногда мне нужна сцена для выполнения асинхронной обработки итератора/потока элементов, и, похоже, не существует способа сделать это.
В частности, Stream.forEach() имеет семантику, которая после вызова всех элементов была обработана. Я хотел бы получить то же самое, но вместо этого с помощью CompletionStage, например:
CompletionStage<Void> done = stream.forEach(...);
done.thenRun(...);
Если поток поддерживается асинхронным потоковым результатом, это будет намного лучше, чем ждать его завершения в самом коде выше.
Возможно ли построить это с помощью существующего Java 8 API? Обходные?