在没有引用的情况下,新的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

回到顶部