gpt4 book ai didi

java - 在不保留引用的情况下安全地启动线程?

转载 作者:行者123 更新时间:2023-11-30 06:19:38 26 4
gpt4 key购买 nike

我是这样开始我的话题的:

(new MyThread()).start();

我没有在任何地方保留对它的引用,所以我想知道这是否是一种安全的方法 - GC 不能收集它,因为它没有被引用吗?


如果不是(我认为是),那为什么呢?

最佳答案

如果您查看 OpenJDK Java 7 source code of Thread ,你会注意到 start()包含以下内容

group.add(this);

其中 groupThreadThreadGroup,它由 JVM 管理。因此,在 Thread 仍在运行时,始终存在对它的可达引用。它不会被垃圾收集


如果这本身并不能令人信服,请考虑启动一个新线程意味着创建一个新的调用堆栈,其中根调用是 Thread 的方法之一,可能是一些 native方法。如果对象被垃圾回收,则不能执行对象的方法。因此,Thread 对象必须仍然存在。

关于java - 在不保留引用的情况下安全地启动线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22874338/

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