非同期で実行されるクエリの入力ストリームがあります。Completablefuture::join
を使用するときに、これらの要求の結果が入力クエリ ストリームの順序で収集されるようにしたいと考えています。
これは私のコードがどのように見えるかです:
queries.stream()
.map(query -> CompletableFuture.supplyAsync(() -> {
try {
return SQLQueryEngine.execute(query);
} catch (InternalErrorException e) {
throw new RuntimeException(e);
}
}))
.map(CompletableFuture::join)
.collect(Collectors.toList());
SQLQueryEngine.execute(クエリ); を返すList<Results>
ため、出力はList<List<Result>
です。すべての結果を平坦化して 1 つのリストに結合したいと考えています。フラット化するコレクションの前に .flatMap(List::stream) を使用すると、順序が維持されますか?