在没有引用的情况下,新的Thread()将被垃圾回收
在下面的示例中,new Thread()没有任何引用。可能是被废弃的垃圾收集了吗?同样,在不扩展Thread类或实现可运行的情况下,我们如何创建线程?
public class TestFive { private int x;
public void foo() {
int current = x;
x = current + 1;
}
public void go() {
for(int i = 0; i < 5; i++) {
new Thread() {
public void run() {
foo();
System.out.print(x + ", ");
}
}.start();
}
}
public static void main(String args[]){
TestFive bb = new TestFive();
bb.go();
}
}
回答:
如果尚未启动的新线程无法正常访问,则将对其进行垃圾回收。
已经启动的新线程成为垃圾回收“根”。它不会(直到)完成才被垃圾收集。
在下面的示例中,new Thread()没有任何引用。可能是被废弃的垃圾收集了吗?
不。它已经启动,因此在完成/死亡之前不会被垃圾收集。并且它 确实 有一个可达的引用,直到(至少)start()
调用返回为止。
同样,在不扩展Thread类或实现可运行的情况下,我们如何创建线程?
在你的榜样,你 已经 创建的匿名子类Thread
; 即扩展的类Thread
。
以上是 在没有引用的情况下,新的Thread()将被垃圾回收 的全部内容, 来源链接: utcz.com/qa/419208.html