您好我想用一個靜態列表保存所有正在運行的線程,如:使用靜態列表,以保持所有線程Java中
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);
}
}
}
上面的代碼將會給打印出來的
true
true
false
false
...
這和線程返回2秒後的預期一樣。
我的問題是:線程添加到靜態線程列表是否在線程返回後消失?即我希望在線程返回後的某個時間點看到列表中的線程對象是否爲空?或者我會無限期地看到線程對象嗎? GC在這裏扮演什麼角色?
*不添加到線程的靜態列表線程永遠消失線程返回之後*?只有當你將其刪除。 –