有:
String getData(String key){
// Slow operation
}
CompletableFuture<String> getDataAsync(String key){
return CompletableFuture.supplyAsync(() -> getData(key));
}
以下是什么区别?
A)
keyStream.map(key -> getData(key));
b)中
keyStream.map(key -> getDataAsync(key).join());
在这种情况下使用异步是否有任何好处?
答案 0 :(得分:1)
IF 方法a和b中的流是顺序的。他们之间没有什么不同,你应该避免使用它。因为您只需在getData
&amp;中运行ForkJoinPool.commonPool()
加入map
方法,直到getData
完成。
IF 方法a和b中的流都是并行的。他们之间也没有什么不同,你也应该避免使用它。因为并行流已经使用ForkJoinPool.commonPool()
进行操作。
答案 1 :(得分:0)
用法Async在你的例子中没有区别,因为你正在调用join,所以join是阻塞调用而Async将不再是ASync