gpt4 book ai didi

java - 如果不再引用该对象,那么 "thread of the object"扩展线程会发生什么情况?

转载 作者:行者123 更新时间:2023-12-01 22:44:10 26 4
gpt4 key购买 nike

public class MyClass extends Thread{
public void run() {

try {
while(!Thread.currentThread().isInterrupted()) {
// ...
}
} catch (InterruptedException consumed)
/* Allow thread to exit */
}

}
public void cancel() { interrupt(); }

//etc.
}

在出于某种原因解构对象之前,我是否应该始终像这样调用cancel(),或者我不应该担心它?

最佳答案

正在运行的线程及其相应的Thread对象是GC root.因此它不符合垃圾回收的条件。

如果您想要 GC 正在运行的线程的 Thread 对象,则需要停止该线程。如果您已正确实现中断机制,则需要使用 cancel() 方法中断线程。一旦线程从其 run() 方法返回,它就完成并且不再是 GC 根。如果您不再有对其 Thread 对象的实时引用,它将被垃圾收集。

关于java - 如果不再引用该对象,那么 "thread of the object"扩展线程会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25580660/

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