gpt4 book ai didi

scala - 当 Scala "Future"被垃圾收集时会发生什么?

转载 作者:行者123 更新时间:2023-12-03 22:24:24 25 4
gpt4 key购买 nike

假设我有一个 Stream计算起来相当昂贵。我可以通过编写类似的东西轻松创建一个“提前计算”的线程

import scala.actors.Futures._
val s = future { stream.size }

如果我扔掉对这个 Future 的引用,该线程会被垃圾收集器杀死吗?

最佳答案

否。线程属于调度程序。在任何情况下,调度程序都有一个对 body 未完成 Future 的引用(这发生在 a.start() 中),所以它不会在完成之前被垃圾收集。

object Futures {

/** Arranges for the asynchronous execution of `body`,
* returning a future representing the result.
*
* @param body the computation to be carried out asynchronously
* @return the future representing the result of the
* computation
*/
def future[T](body: => T): Future[T] = {
val c = new Channel[T](Actor.self(DaemonScheduler))
val a = new FutureActor[T](_.set(body), c)
a.start()
a
}
}

关于scala - 当 Scala "Future"被垃圾收集时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3226078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com