Возможный дубликат:
Собирается сборка Java Thread Garbage
Рассмотрим следующий класс:
class Foo implements Runnable {
public Foo () {
Thread th = new Thread (this);
th.start();
}
public run() {
... // long task
}
}
Если мы создадим несколько экземпляров Foo
, выполнив
new Foo();
new Foo();
new Foo();
new Foo();
(обратите внимание, что мы не сохраняем указатель на них).
-
Могут ли эти экземпляры удалить сборщик мусора раньше заканчивается нить в
run()
? (Другими словами: есть ли какая-либо ссылка к объектамFoo
?) -
И, с другой стороны, эти экземпляры будут удалены GC после завершения потока в `run() ', или мы теряем память ( "утечка памяти" )?
-
Если один или 2. являются проблемой, какой правильный способ это сделать?
Спасибо