2017-07-04 56 views
0

有:加入CompletableFuture VS同步方法

String getData(String key){ 
    // Slow operation 
} 

CompletableFuture<String> getDataAsync(String key){ 
    return CompletableFuture.supplyAsync(() -> getData(key)); 
} 

是什么下面的区别?

一)

keyStream.map(key -> getData(key)); 

B)

keyStream.map(key -> getDataAsync(key).join()); 

有没有在这种情况下使用异步什么优势?

+0

请解释一下你的问题多一点。 –

+1

没有区别:'join()'将会阻塞,直到结果可用。 – ck1

回答

1

IF两个方法a和b中的流是顺序的。他们之间没有什么不同,你应该避免使用它。因为您只需运行getData中的ForkJoinPool.commonPool() &加入map方法,直到完成getData

IF在方法a和b中的流都是并行性的。他们之间也没有什么不同,你也应该避免使用它。因为并行流已经在使用ForkJoinPool.commonPool()进行操作。

0

使用异步在这里你的榜样不会使差异,你在呼唤与所以加入阻塞调用连接和异步不再作异步