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可以在它完成之前退出。