假设我有以下代码:
int Main()
{
if (true)
{
new Thread(()=>
{
doSomeLengthyOperation();
}).Start();
}
while (true)
{
//do nothing
}
}
有2个线程,我将称执行Main()函数的线程为主线程,if测试中被new出来的线程为线程A。我的问题是,线程A什么时候被销毁?doSomeLenghtyOperation()能否完成运行?由于没有引用指向线程A,它会被标记为垃圾回收的候选对象:
1.在“new Thread().Start()”语句本身完成后立即? 2.在退出“if(true)”作用域后立即? 3.doSomeLengthOperation()运行完成后立即? 4.从不?
我看到的所有示例都是Main()持有引用,然后Main线程等待与线程A合并后退出。我想知道上面代码的生命周期。
先感谢您!
if (true)
是完全不必要的。你可以只使用大括号来创建一个作用域。 - VladV