2017-07-05 44 views

回答

1

您可以爲每個方法調用構建Stream,然後可以按如下方式將結果收集到列表中。

Stream.Builder<Supplier<CanditateInfo>> streamBuilder = Stream.builder(); 

results.forEach(string-> streamBuilder.accept(() -> this.getCandidatesInfo(string))); 

List<CanditateInfo> candidateInfos = streamBuilder.build().map(supplier -> CompletableFuture.supplyAsync(supplier, Executors.newFixedThreadPool(
    results.size()))).collect(Collectors.toList()).stream().map(
    CompletableFuture::join).collect(Collectors.toList()); 

在這裏,我因爲默認情況下使用的獨立執行程序,JAVA使用公共fork和join池,這將阻止所有其他線程如果池會得到填補。欲瞭解更多信息,請參閱http://fahdshariff.blogspot.in/2016/06/java-8-completablefuture-vs-parallel.html

+0

非常感謝你,它是做正確的事情! – ttdol2506

相關問題