gpt4 book ai didi

java - 线程的 run() 返回后会发生什么?

转载 作者:太空宇宙 更新时间:2023-11-04 07:11:54 24 4
gpt4 key购买 nike

目前我正在学习java中的线程。我想知道当线程的 run() 返回时会发生什么(这意味着线程已死)?例如:

public class ThreadA extends Thread {
private Thread threadB = new ThreadB();
...

@Override
public void run() {
threadB.start(); //It will take a while to finishes
}
}

...
ThreadA threadA = new ThreadA();
threadA.start()

线程A和线程B会发生什么?它们会被垃圾收集吗?如果是,如何以及何时?

最佳答案

当您在 A 中启动新线程时,它将一直存在直到停止。然后它将被垃圾收集。当你启动它时,它就被JVM线程管理器引用,因此,将在GC之前完全完成。

在甲骨文documentation你可以看一个例子:

The following code would then create a thread and start it running:
PrimeRun p = new PrimeRun(143);
new Thread(p).start();

如您所见,您不需要保留对正在运行的线程的引用。

您还可以使用finalize()方法测试此类问题。当它的对象被收集时,它将被调用。

关于java - 线程的 run() 返回后会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20533427/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com