は、私は、ネストされたクラスを使用して、新しいスレッドを開始し、このTest
クラスのインスタンスを作成するとしますGCを別のスレッドで使用しても、ここで変数を収集できますか?
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)
を使用してローカル変数に格納)を作成できますが、これが必要かどうかは疑問です。 Test
から強い参照を有する