【发布时间】:2021-06-10 01:11:49
【问题描述】:
在repl中使用future:
scala> val a=Future{1}
a: scala.concurrent.Future[Int] = Future(<not completed>)
scala> a.value
res0: Option[scala.util.Try[Int]] = Some(Success(1))
返回一些(成功(1))
在 IDEA 中使用它:
object A extends App{
val a=Future{1}
println(a.value)
}
返回无:
"C:\Program Files\Java\jdk1.8.0_201\bin\java.exe"...
None
为什么?没有像 Thread.Sleep 这样的东西,所以在任何情况下,我认为 Future 会立即返回,给我 Some(Successs(1))
谢谢!
【问题讨论】:
-
REPL 很慢,你必须打印上一个结果,读取下一行,解析它,执行它,打印它。 - 不是火箭科学。
-
谢谢!所以程序很快,但我只让future返回一个值1,即使它很快,它也不能立即返回1?
-
不,因为创建未来意味着在线程池中调度任务,这是一项昂贵的操作。如果你想返回一个未来已经完成的使用
Future.succesful(1) -
您可以
Await.result查看所需的结果。
标签: scala asynchronous future