假设我有如下代码:
int Main()
{
if (true)
{
new Thread(()=>
{
doSomeLengthyOperation();
}).Start();
}
while (true)
{
//do nothing
}
}
有 2 个线程,我将把执行 Main() 函数的线程称为 Main 线程,并将在“if”测试中新建的线程称为线程 A。
我的问题是,线程 A 什么时候被销毁?doSomeLenghtyOperation() 能否完成?
由于没有指向线程 A 的引用,是否会将其标记为垃圾回收的候选对象:
- 在“new Thread().Start()”语句本身完成后立即?
- 在“if(true)”范围退出后立即?
- doSomeLengthOperation() 运行完成后?
- 绝不?
我看到的所有示例都是 Main() 持有引用,然后是 Main 线程在退出之前等待加入线程 A。我很好奇上面代码的生命周期是多少。
提前致谢!