以下代码执行预期操作。
import scala.concurrent.Future
import scala.concurrent.ExecutionContext
object UseFuture extends App
{
implicit val ec = ExecutionContext.global
Future(println { "This should be run in another thread" })
println("Test")
}
但我看不到未来的产出。
import scala.concurrent.Future
import scala.concurrent.ExecutionContext
object UseFuture extends App
{
implicit val ec = ExecutionContext.global
Future(println { "This should be run in another thread" })
}
快速解释一下?
@Thilo是正确的,你的应用退出速度比 Future 开始执行的速度快。基本上,当您使用 Future 时,使用 Await.result 不是好的做法,因此此示例仅用于教育目的:)
import scala.concurrent.{Await, ExecutionContext, Future}
import scala.concurrent.duration._
object UseFuture extends App
{
implicit val ec = ExecutionContext.global
println(s"Current thread: ${Thread.currentThread().getId}")
val future = Future(println { s"Thread id in future: ${Thread.currentThread().getId}. This should be run in another thread" })
Await.result(future, 15.seconds)
println("Future has been executed")
}