【发布时间】:2011-12-13 17:06:19
【问题描述】:
假设我创建了这个Test 类的实例,它使用嵌套类启动了一个新线程:
public class Test
{
private String _str;
public Test()
{
_str = "Hello world !";
new TestThread().start(); // Start a background thread
}
private class TestThread extends Thread
{
public void run()
{
while (true)
{
System.out.println(_str);
Thread.sleep(1000);
}
}
}
}
如果我删除对我的 Test 实例的任何强引用,现在会发生什么?后台线程还活着,会继续打印_str这个变量,但是怕GC随时可以收集到。
当然,我可以创建引用的本地副本(使用构造函数:public TestThread(String str) 并将其存储在本地变量中)但我想知道这是否有必要。
【问题讨论】:
标签: java multithreading nested-class