当一个线程的函数范围结束时,它会自动停止吗?

12
Thread myThread = new Thread(new ParameterizedThreadStart(threadFunction));

public void threadFunction() {
 // Run a finite code
 ...
}

问题是:一旦threadFunction()完成,myThread会被处理吗?


最终,当函数完成时,线程状态将设置为“已停止”,并最终被垃圾回收。另请参阅:https://dev59.com/uHVD5IYBdhLWcg3wHnyd - dash
是的,当线程执行完毕时,它会自动被处理掉。 - Siddiqui
2个回答

18

线程不需要被处理。 Thread 类没有实现 IDisposable 接口,也没有 Dispose 方法。

当你的线程完成时,你不需要做任何特殊的清理工作。


2

是的,一旦函数返回,线程将停止并被释放。
如果要保持线程运行,你需要做一些类似于以下的操作:

while(true){}

如果您不想因为创建新线程消耗资源而使您的线程被处理掉,您可以使用ThreadPool。在 .Net 中有一个同名的类。这样,每次需要线程时,它将从线程池中获取并利用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接