在下面,它会在延迟2秒后运行计算,但在运行应用程序时,它永远不会退出。阻止应用退出的代码是什么?
object Test extends App{
import scala.concurrent._
import java.util._
import java.util.concurrent.{ TimeUnit }
val timer = new java.util.Timer()
def timeoutFuture[A](v: A, delay: Long, unit: TimeUnit): Future[A] = {
println("inner")
val p = Promise[A]()
println("inner")
timer.schedule(new java.util.TimerTask {
def run() {
p.success(v)
}
}, unit.toMillis(delay))
println("inner")
p.future
}
println("begin")
val x1=timeoutFuture[Int](1+1,2,TimeUnit.SECONDS)
println("end")
println("quit")
}
答案 0 :(得分:1)
val timer = new java.util.Timer()
将启动TimerThread
(扩展标准Java线程并实现为无限循环),它在后台运行并阻止您的应用程序退出。
您可以在脚本末尾运行System.exit(0)
以停止所有后台线程。
您还考虑使用Akka scheduler而不是Java Timer吗?