我有以下代码:
static void Main(string[] args)
{
Console.Write("Press ENTER to start...");
Console.ReadLine();
Console.WriteLine("Scheduling work...");
for (int i = 0; i < 1000; i++)
{
//ThreadPool.QueueUserWorkItem(_ =>
new Thread(_ =>
{
Thread.Sleep(1000);
}).Start();
}
Console.ReadLine();
}
根据 Bart De Smet 的教科书 C# 4.0 Unleashed(第 1466 页),使用新线程应该意味着使用比使用我的代码中注释掉的 ThreadPool.QueueUserWorkItem 更多的线程。但是我已经尝试了这两种方法,并且在资源监视器中看到使用“新线程”,大约分配了 11 个线程,但是当我使用 ThreadPool.QueueUserWorkItem 时,大约有 50 个。为什么我得到的结果与所提到的相反在这本书里?
另外,为什么如果增加睡眠时间,在使用 ThreadPool.QueueUserWorkItem 时会分配更多线程吗?