Предположим, я создаю экземпляр этого 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)
и сохранить ее в локальной переменной), но мне интересно, если это необходимо.