斯卡拉 - 期货不会运行

时间:2013-05-03 11:39:12

标签: scala concurrency future

我正在尝试运行以下未来的基本代码

 future { println("ssss")} onSuccess{ case _ => println("succ")}

然而,当我运行main方法时,没有打印到控制台,系统几乎立即退出。我正在使用隐式ExecutionContext。任何提示?

此代码:

  val f = future(Await.ready(Promise().future, d.timeLeft))

   f.onSuccess {
     case _ => println("hee")
   }

也会立即退出......

1 个答案:

答案 0 :(得分:11)

期货在专用线程池上执行。如果您的主程序不等待将来,它将立即退出,未来将无法执行。 你可以在这里做的是在你的主程序中使用Await来阻止主线程,直到将来执行:

def main( args: Array[String] ) {
  val fut = future { println("ssss")}
  fut onSuccess{ case _ => println("succ")}
  Await.result( fut )
}