13
Скажем, у меня есть Stream
, что довольно дорого для вычисления. Я могу легко создать нить, которая «вычисляет вперед» просто писать что-то вродеЧто происходит, когда Scala «Будущее» собирает мусор?
import scala.actors.Futures._
val s = future { stream.size }
Если я затем выбросить ссылку на этот Future
, будет этот поток будет уничтожен сборщиком мусора?
Нет. Сборщик мусора никогда не убивает нитки. Вычисление может иметь побочные эффекты, о которых сборщик мусора не может знать, другими словами, поток может делать что-то важное, что сборщик мусора не может знать, поэтому он никогда не сможет безопасно остановить поток. – Jesper