Java线程设置为null时会发生什么?

ala*_*lan 27 java multithreading garbage-collection

线程启动后,如果线程的引用设置为null,线程会发生什么?它会停止吗?它符合GC的条件吗?

像这样:

t.start();
t = null;
Run Code Online (Sandbox Code Playgroud)

sgo*_*les 39

Live线程将继续运行,即使其引用设置为null.
就像任何其他对象一样,当没有对它的引用时,它就有资格使用GC.棘手的一点是,正在运行的线程在ThreadGroup中有一个引用,即使你的程序没有保留一个,因此一个正在运行的线程永远不会被GCed.

  • 我认为你的意思是大胆地说"运行的线程永远不会被GCed",因为它现在看起来好像所有线程都没有GCed (2认同)

use*_*421 15

线程会发生什么?

没有.

它会停止吗?

没有.

它符合GC的条件吗?

没有.