Scala中多个期货的奇怪案例

时间:2011-06-03 15:50:46

标签: scala parallel-processing actor future

Scala中与Future相关的类和特征之间的联系是什么,以及为什么它们被分散在不同的包中?

我找到了那些:

abstract class scala.actors.Future
object         scala.actors.Futures
trait/object   scala.collection.parallel.FutureThreadPoolTasks
trait          scala.concurrent.FutureTaskRunner
trait          scala.parallel.Future    (the package consists of only this file...)

他们是否存在显着不同的事情,还是有其他原因导致他们无法合并?

是否有一个很好的例子显示何时会使用这一个或另一个?

编辑:赏金用于解释每个类/特征/对象的作用以及它们如何证明它们的存在/它们如何有用。

2 个答案:

答案 0 :(得分:11)

答案 1 :(得分:4)

以下是简要说明。 (部件从scala doc复制)。让我知道是否有一些你不理解的东西,我会尝试更具体,并给你一个具体的例子。

抽象类scala.actors.Future - 您熟悉java.util.concorrent.Future吗? scala.actors.Future 基本上代表异步计算的结果,但对于 actors

scala.actors.Futures - 一个对象(~singleton),包含四个用于处理 scala.actors.Future 的实用程序方法。

scala.parallel.Future - (这个对我很新,但它包含非常基本的操作(apply和isDone))它的一个没有参数的函数会阻塞调用者并行与功能相关的计算未完成。 (函数?提示:extends())

scala.collection.parallel.FutureThreadPoolTasks - 来自scala doc:“基于Java线程池API和使用期货同步的任务对象的实现。”够了吗? :)

scala.concurrent.FutureTaskRunner - 您熟悉Executor吗? ExecutorScheduler是scala标准库中的一个(三个)具体实现。 executeFromActor 是更有趣的方法之一,应该给你一个关于何时需要使用这个方法的提示