看过介绍Composable Futures with Akka 2.0 ,我很想知道 Futures 和 Agents 的 Akka 实现比 Clojure 的有哪些附加功能。
最佳答案
“Akka 中的代理受到 Clojure 中代理的启发。”这是关于 Akka 的代理文档中的第一行,希望它能解决代理部分的问题。就 future 而言,它们在概念上是相同的(即在单独的线程上调用操作)。底层实现基于 java.util.concurrent
,因此两者使用相同的底层基础设施。
Scala 部分:
可组合 词如何发挥作用的重要部分(对于代理和 future )。如果你去 akka 文档,你会发现你可以在 Akka future 上使用高阶函数,如 map
、filter
等,即 map
对 future 的操作返回另一个 future (对于 filter
也是类似的)。这使您可以轻松地组合/链接 future 并等待最终值(value)的最终 future 。现在,所有这些都是可能的,因为 map
、filter
、for
comprehension 等都是基于 Scala (monadic) API,它基本上允许任何提供这些功能的特定实现的新类型。
Clojure 部分:
现在在 clojure 方面,您知道 map
、filter
等只是处理集合的普通函数,即它们处理可以遍历的东西,因此是不同的来自 scala 的 Monadic API 的概念。所以在 Clojure 中,你将使用不同的方式来组合 future,毕竟 Clojure(或一般的 Lisp)允许以多种方式进行组合
关于scala - Akka 中的 Futures 和 Agents 比 Clojure 的同类产品有什么优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16336145/