Java 8引入的CompletableFuture
为语言带来了像scala.concurrent.Future
中的单子变换等功能。
Scala开发人员为什么应该更喜欢使用Scala Futures而不是java 8的
CompletableFuture
?它们有什么区别?是否仍有充分理由通过
akka.dispatch
桥在Java中使用scala.concurrent.Future
?
CompletableFuture
没有惯用的Scala API。CompletableFuture
并不完全等同于Scala Future
。它更像是Scala Future
和Promise
的融合体。CompletableFuture
没有太多意义,除非您正在设计与Java无缝互操作的公共API。我特别寻找使用akka.dispatch在Java中的原因,如果仍然有任何原因
Akka是建立在Scala之上的,有时会使用Scala的Future
。这意味着,在您的代码中有些部分是用Java编写的情况下,值得将其包装在Scala API中(使用akka.dispatch
Java API),以便能够轻松地与Akka一起使用。Future
,最后可以利用akka pipe将未来的结果作为消息传递给某个actor。
stream
方法,所以你不能像平常一样调用 map-reduce(以及 filter 等函数) - 必须使用一些丑陋的方法。当然,CompletableFuture 没有 for-comprehension。我没有在实践中使用过 CompleteFuture(它太丑了) - 所以无法完全回答你的问题。