考虑以下类:
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
对象的引用?)另一方面,这些实例会在 `run()' 中的线程结束后被 GC 删除,还是我们在浪费内存(“内存泄漏”)?
如果 1. 或 2. 有问题,那么正确的方法是什么?
谢谢