java - 如果java中的线程正在运行并且我不拥有任何对它的线程引用,线程是否会被垃圾收集

标签 java multithreading

由于 Thread.State 为 RUNNING,我在启动线程后立即将线程引用设置为 null

最佳答案

正如其他问题的答案中已经指出的,该线程不会被垃圾收集。

根据定义,只有当任何 Activity 线程都无法访问该对象时,该对象才符合垃圾回收的条件 - 并且我认为处于运行状态的线程是 Activity 线程>。 :)

来自 Java 7 规范 (12.6.1):

A reachable object is any object that can be accessed in any potential continuing computation from any live thread.

在内部,我确信 JVM 的某些部分仍然引用该线程,例如调度程序。

关于java - 如果java中的线程正在运行并且我不拥有任何对它的线程引用,线程是否会被垃圾收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9783285/

相关文章:

java - 使用 indexOf() 两次未能检测到第二个字符的出现

java - 如何正确处理人类可读的结果?

java - notify() 和 notifyAll() 的区别

java - 在多线程中仅从链表中删除一次

java - 使用线程输入

multithreading - 运行 Speedy 或 PersistentPerl 的多个副本以从 Tomcat 调用

.net - AutoResetEvent 类型是原子开关的合适选择吗?

java - 在 for 循环内部和循环外部使用变量

java - 试图找到二维数组的平均值时出现逻辑错误

java - 未加载 clientlibs 下的 Js 文件