Java-Threads und Garbage Collector [duplizieren]

Mögliche Duplikate:
Java Thread Garbage gesammelt oder nicht

Betrachten Sie die folgende Klasse:

<code>class Foo implements Runnable {

  public Foo () {
       Thread th = new Thread (this);
       th.start();
  }

  public run() {
    ... // long task
  }

}
</code>

Wenn wir mehrere Instanzen von erstellenFoo indem du tust

<code>new Foo();
new Foo();
new Foo();
new Foo();
</code>

(Beachten Sie, dass wir keinen Zeiger auf sie behalten).

Könnten diese Instanzen vom Garbage Collector entfernt werden?Vor der Faden inrun() endet? (Mit anderen Worten: Gibt es einen Hinweis auf dieFoo Objekte?)

Und andererseits, werden diese Instanzen vom GC entfernt, nachdem der Thread in "run ()" beendet ist, oder verschwenden wir Speicher ("Memory Leak")?

Wenn entweder 1. oder 2. ein Problem sind, wie ist der richtige Weg, dies zu tun?

Vielen Dank

Antworten auf die Frage(5)

Ihre Antwort auf die Frage