gpt4 book ai didi

java - Scala Futures 和 java 8 CompletableFuture

转载 作者:太空狗 更新时间:2023-10-29 22:40:27 24 4
gpt4 key购买 nike

Java 8 中 CompletableFutures 的引入带来了 scala.concurrent.Future 中可用的语言特性,例如 monadic 转换。

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

  • 还有充分的理由通过 akka.dispatch 桥在 Java 中使用 scala.concurrent.Future 吗?

最佳答案

What are the differences, and why a Scala developer should prefer Scala Futures over java 8 CompletableFuture ?

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

对于 Scala 开发人员来说,影响是:

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

还值得注意的是,java CompletableFuture 并不完全等同于 scala Future。它是 scala FuturePromise 的融合体。

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

Are there still good reasons to use the scala.concurrent.Future in Java through akka.dispatch bridge?

I am particularly looking for reasons to use akka.dispatch in Java, if there are still any

Akka 建立在 scala 之上,它有时使用 scala Future。这意味着如果您有一些代码是用 java 编写的,则值得将其包装在 scala api 中(使用 akka.dispatch java api)以便能够轻松地与 akka 一起使用。

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

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

关于java - Scala Futures 和 java 8 CompletableFuture,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28588806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com