为什么不能通过将线程的引用设置为 null 并让垃圾收集器删除它来终止线程?它和其他对象一样,不是吗?
示例:
Thread t = new Thread(new Runnable() {
public void run() {
//...
}
}).start;
t = null;
最佳答案
It's an object like any other, isn't it?
不,不是。它代表一个非内存资源。您是否希望一个文件被删除,因为代表它的对象被垃圾回收了?
事实上,当谈到垃圾回收时,Thread
对象非常不“像任何其他”对象,因为线程本身就是可达性树,因此表示正在运行的线程的 Thread 对象的字段(或堆栈上的局部变量)引用的任何对象都根据定义不符合垃圾回收条件。
关于Java 线程终止引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5763233/