Hallo ich eine statische Liste verwenden möchten alle laufenden Threads zu halten, wie:statische Liste Mit allen Threads in Java zu halten
public class MyClass {
public static final List<Thread> threads = new ArrayList<>();
public static void main(String[] args) throws InterruptedException {
new Thread(() -> {
MyClass.threads.add(Thread.currentThread());
try {
Thread.sleep(2000);
} catch (Exception e) {
}
}).start();
for (int i = 0; i < 10; i++) {
if (!threads.isEmpty()) {
Thread t = threads.get(0);
System.out.println(t.isAlive());
}
Thread.sleep(1000);
}
}
}
Der obige Code wird aus
einen Druck gebentrue
true
false
false
...
Dies ist wie erwartet, da der Thread nach 2 Sekunden zurückkehrt.
Meine Frage ist: verschwindet der Thread, der zu der statischen Liste von Threads hinzugefügt wird, nachdem der Thread zurückgegeben wurde? d. h. erwarte ich, dass das Thread-Objekt in der Liste an einem bestimmten Punkt null wird, nachdem der Thread zurückgegeben wurde? Oder sehe ich das Thread-Objekt auf unbestimmte Zeit? Spielt GC hier eine Rolle?
* verschwindet der der statischen Threadliste hinzugefügte Thread jemals, nachdem der Thread zurückgegeben wurde? * Nur wenn Sie ihn entfernen. –