Mar*_*oom 3 java multithreading garbage-collection object
后
{
Thread t = new Thread();
t.start();
}
Run Code Online (Sandbox Code Playgroud)
是Thread对象的候选者吗?
不,它不符合垃圾收集条件.由于线程调度程序(在调用之后t.start( ))在可运行队列中调度线程,因此它不符合GC的条件.
检查线程是否仍在运行的方法之一是调用thread.isAlive().
final boolean isAlive( )
Run Code Online (Sandbox Code Playgroud)
isAlive( )如果调用它的线程仍在运行,则该方法返回true.否则返回false.在你的情况下,你总是可以调用t.isAlive()方法,只是为了检查线程是否存活.
当线程停止或结束其生命周期或尚未安排运行时(如Jon的代码片段),则它符合GC的条件.
如果它已经启动,它就不符合GC的条件 - Thread.currentThread()毕竟正在运行的代码可以要求.
如果你刚刚创建它但没有启动它,像这样:
{
Thread pointless = new Thread();
}
Run Code Online (Sandbox Code Playgroud)
然后我怀疑这将有资格获得GC -但它是非常不寻常,但不启动它来创建一个线程.(我想在你开始它之前可能会抛出一个异常......)
| 归档时间: |
|
| 查看次数: |
274 次 |
| 最近记录: |