Scala Futures and java 8 CompletableFuture

2022-09-03 01:49:18

Java 8 的引入带来了诸如 monadic 转换之类的语言功能。CompletableFuturesscala.concurrent.Future

  • 有什么区别,为什么Scala开发人员应该更喜欢Scala Futures而不是java 8?CompletableFuture

  • 在 Java through bridge 中使用 是否还有充分的理由?scala.concurrent.Futureakka.dispatch


答案 1

有什么区别,为什么Scala开发人员应该更喜欢Scala Futures而不是java 8 CompletableFuture?

改写@dk14评论中指出的内容,我会说没有惯用的Scala api。CompletableFuture

对于 Scala 开发人员来说,这意味着:

  • 缺乏理解,因为它不遵循一元类型常见的Scala方法约定
  • java-scala 互操作开销在使用大部分方法时需要

同样值得注意的是,java并不完全等同于scala。它是 scala 和 .CompletableFutureFutureFuturePromise

考虑到上面列出的缺点,在scala中使用没有多大意义,除非你正在设计应该与java无缝互操作的公共API。CompletableFuture

是否还有充分的理由通过 akka.dispatch bridge 在 Java 中使用 scala.concurrent.Future?

我特别寻找在Java中使用akka.dispatch的理由,如果还有的话

Akka建立在scala之上,它有时使用scala s。这意味着,当你有一部分代码用java编写时,值得将其包装在scala api(使用java api)中,以便能够轻松地将其与akka一起使用。Futureakka.dispatch

例如,您正在 java 中实现 akka actor。在处理消息时,您希望执行一些非阻塞读取,当完成时,应将结果作为消息发送给另一个参与者。

你可以做的是把你的I / O放入java Callable中,然后使用akka.dispatch.Futures#future从中获取scala,然后你可以利用akka管道将未来的结果作为消息传递给某个参与者。Future


答案 2

推荐