Java 线程在完成后是否会被删除

2022-09-03 06:17:54

假设我使用下面的方法每隔几秒钟生成一个线程,每个线程大约需要一秒钟才能完成。完成的线程会被删除吗?

new Thread (new myRunnableClass()).start();

答案 1

本机的操作系统级线程在线程完成后立即释放(大约在完成时),但线程对象会像任何其他对象一样存活,直到它变得无法访问并且垃圾回收器感觉像在运行。run()

编辑:同样有趣的是,(在 Sun 的 Oracle 实现中,anywho)有一个由 VM 调用的私有方法,当线程退出时,它会主动使多个字段空化,包括引用构造函数设置的字段。因此,即使您保留了对 的引用,在完成执行后不需要的东西也会被释放。ThreadRunnableThread(Runnable)Thread


答案 2

我不会称它为已删除。一旦线程完成,它将进入死状态,准备被JVM垃圾回收。

enter image description here


推荐