C#中使用线程池管理和复用线程该如何写,请写一则实例
时间: 2024-10-17 09:10:39 浏览: 27
在C#中,使用`System.Threading.Tasks`命名空间下的`ThreadPool`类可以帮助管理和复用线程。线程池是一种预设的线程集合,用于执行可异步的任务,它能自动处理线程的创建、调度和清理,避免了直接手动管理线程的复杂性和风险。下面是一个简单的例子:
```csharp
using System;
using System.Threading.Tasks;
public class ThreadPoolExample
{
public static void Main()
{
// 创建任务列表
var tasks = new List<Task>();
for (int i = 0; i < 10; i++)
{
// 使用ThreadPool.QueueUserWorkItem方法添加任务到线程池,这个方法接受一个Action作为参数
// 这里我们只是简单打印数字,实际上可以放入更复杂的计算或其他操作
tasks.Add(Task.Factory.StartNew(() => Console.WriteLine($"Task {i} started by ThreadPool.")));
}
// 等待所有任务完成
Task.WaitAll(tasks.ToArray());
Console.WriteLine("All tasks finished.");
Console.ReadKey();
}
}
```
在这个例子中,我们向线程池提交了10个任务,这些任务会在线程池的线程上并行执行。`WaitAll`方法会阻塞主线程,直到所有任务都完成后继续执行。
通过这种方式,我们可以利用线程池的复用特性,提高程序性能。注意线程池大小有限,过度依赖线程池可能导致线程池耗尽,这时新任务会被阻塞等待,所以合理配置线程池大小很重要。
阅读全文