当我创建 ad-hoc future 并调用它时,它可以正常工作。
scala> val f = future {Thread.sleep(1000 * 60 * 1); println("Hi"); 20} f: scala.actors.Future[Int] = scala> f() Hi res39: Int = 20
当我创建相同的 future 并调用awaitAll
时,它不起作用。 awaitAll
返回None
,好像未来未解决。
scala> val f = future {Thread.sleep(1000 * 60 * 1); println("Hi"); 20} f: scala.actors.Future[Int] = scala> awaitAll(1000 * 60 * 2, f) Hi res40: List[Option[Any]] = List(None)
答案 0 :(得分:1)
首选future
超过Future
,不推荐使用。
如何:“将Future
中的未来的scala.concurrent
推荐到Future
中过去的scala.actors
,不推荐使用。”
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
}
答案 1 :(得分: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")
}
}