0

当我创建一个临时的未来并称之为它时,它工作正常。

scala> val f = 未来 {Thread.sleep(1000 * 60 * 1); println("你好"); 20}
f: scala.actors.Future[Int] =

scala> f()
你好
res39: 整数 = 20

当我创建相同的未来并调用awaitAll它时,它不起作用。就好像未来没有解决一样的awaitAll回报。None

scala> val f = 未来 {Thread.sleep(1000 * 60 * 1); println("你好"); 20}
f: scala.actors.Future[Int] =

scala> awaitAll(1000 * 60 * 2, f)
你好
res40: List[Option[Any]] = List(None)
4

2 回答 2

1

更喜欢被弃用future的。Future

怎么样:“更喜欢Future未来的未来scala.concurrentFuture不是过去的过去scala.actors,这已被弃用。”

像往常一样,Heather Miller 说得最好;见评论。

object Test extends App {
  import scala.concurrent._
  import Await._
  import Future._
  import duration._
  import ExecutionContext.Implicits.global

  val data = List(1,2,3)
  result(traverse(data)(i => future{10 * i}), Duration("10 sec")) foreach println
}
于 2012-11-11T20:22:57.890 回答
1

我希望能帮助你。

import scala.actors._

object StackOverFlow13331294 extends App {
    Futures awaitAll (1000 * 60 * 1,
            Seq(new StackOverFlow13331294 !! "execute"): _*) foreach println
}

class StackOverFlow13331294 extends Actor {
    start
    override def act = react {
        case "execute" =>
            // Thread sleep 1000 * 60 * 1 ?
            println("Hi")
            reply("20")
    }
}
于 2012-11-12T03:55:24.903 回答