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





