Java 线程在完成后是否会被删除
2022-09-03 06:17:54
假设我使用下面的方法每隔几秒钟生成一个线程,每个线程大约需要一秒钟才能完成。完成的线程会被删除吗?
new Thread (new myRunnableClass()).start();
假设我使用下面的方法每隔几秒钟生成一个线程,每个线程大约需要一秒钟才能完成。完成的线程会被删除吗?
new Thread (new myRunnableClass()).start();
本机的操作系统级线程在线程完成后立即释放(大约在完成时),但线程对象会像任何其他对象一样存活,直到它变得无法访问并且垃圾回收器感觉像在运行。run()
编辑:同样有趣的是,(在 Sun 的 Oracle 实现中,anywho)有一个由 VM 调用的私有方法,当线程退出时,它会主动使多个字段空化,包括引用构造函数设置的字段。因此,即使您保留了对 的引用,在完成执行后不需要的东西也会被释放。Thread
Runnable
Thread(Runnable)
Thread