在等待类尚未完成时保持主线程运行

时间:2016-06-02 11:13:34

标签: scala

我有以下代码:

  val f1: Future[Unit] = Future {
    Thread sleep 5
    println(1)
  }

  val f2: Future[Unit] = Future {
    Thread sleep 10000
    println(2)
  }

  def main(args: Array[String]): Unit = async {
    await(f1)
    await(f2)
 }

我希望主线程在最后一个await方法终止后终止。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

好吧,由于async/await生成Future,您还需要等待它。

import scala.concurrent.Await
import scala.concurrent.duration._

def main(args: Array[String]): Unit = {
  val future = async {
    await(f1)
    await(f2)
  }
  Await.result(future, Duration.Inf)
}