在Java 8中引入CompletableFutures
带来了scala.concurrent.Future
中可用的语言功能,例如monadic转换。
有什么区别,为什么Scala开发人员更喜欢Scala Futures而不是java 8 CompletableFuture
?
是否还有充分的理由通过scala.concurrent.Future
桥在Java中使用akka.dispatch
?
答案 0 :(得分:16)
有什么区别,为什么Scala开发人员更喜欢Scala Futures而不是java 8 CompletableFuture?
重述@ dk14在评论中指出的内容我会说CompletableFuture
没有惯用的Scala api。
对于scala开发人员,其含义是:
值得注意的是,java CompletableFuture
并不完全等同于scala Future
。它是scala Future
和Promise
的融合。
考虑到上面列出的缺点,在scala中使用CompletableFuture
没有多大意义,除非您正在设计应该与java无缝互操作的公共API。
是否还有充分的理由通过akka.dispatch桥在Java中使用scala.concurrent.Future?
我特别想找到在Java中使用akka.dispatch的理由,如果还有
的话
Akka构建于scala之上,有时使用scala Future
。这意味着如果你有一些用java编写的代码部分,那么将它包装在scala api中(使用akka.dispatch
java api)是值得的,以便能够轻松地将它与akka一起使用。
例如,您正在java中实现akka actor。在处理消息时,你想做一些非阻塞读取,当完成后,应该将结果作为消息发送给另一个actor。
你可以做的是将你的I / O放入java Callable,然后使用akka.dispatch.Futures#future从中获取scala Future
,然后你可以利用akka {{3将未来的结果作为消息传递给某个演员。