无法调用Future#onSuccess

时间:2015-09-07 16:06:48

标签: scala concurrency

scala 2.11.7正在使用中。

下面的代码出现了一个奇怪的问题。致电Future#onSuccess并未打印任何内容,而是按预期将Await#result替换为3

import scala.concurrent._
import ExecutionContext.Implicits.global
import scala.concurrent.duration._

object FutureTest extends App {

  val f1 = Future {
    Thread.sleep(1000)
    1
  }

  val f2 = Future {
    Thread.sleep(2000)
    2
  }

  val f = for {
    v1 <- f1
    v2 <- f2 
  } yield v1 + v2

  f onSuccess { case v => println(v) } // Why did nothing happen here?

  // println(Await.result(f, Duration.Inf)) // => 3
}

@EDIT

Future作为守护程序线程运行 - JVM可以在它完成之前退出。

0 个答案:

没有答案