java线程完成后会被删除

Dav*_*ave 12 java concurrency multithreading

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

new Thread (new myRunnableClass()).start();
Run Code Online (Sandbox Code Playgroud)

gus*_*afc 9

一旦线程完成,就会释放本机的OS级线程(大约run()完成时),但线程对象与任何其他对象一样,直到它变得无法访问并且垃圾收集器感觉就像运行一样.

编辑:这也可能是有趣的,知道Thread(在Sun的 Oracle实现,anywho)具有VM称为私有方法当线程退出时,其积极的NULL多个领域,其中包括一个参照Runnable设置由Thread(Runnable)构造函数.因此,即使您保留对该引用的引用Thread,也将释放完成执行后不需要的内容.


bra*_*boy 7

我不会把它称为删除.一旦线程完成,它将进入死状态,准备好由JVM进行垃圾回收.

  • ...除非某些其他"实时"数据结构维护对线程对象的引用.在OP中提出的示例不会有问题. (3认同)