一、线程池是单例的,全局惟一的,设置线程池最大活跃线程数是5,设置后,容许同时并发的Task只有5个,咱们开启100个task去作任务,从最后的输出结果看到,虽然开启了100个task,可是线程id始终是那5个如图所示并发
二、结论:证实task是来源于线程池的,并且线程是重用的spa
namespace task_threadpool { class Program { static void Main(string[] args) { ThreadPool.SetMaxThreads(5, 5); for (int i = 0; i < 100; i++) { int k = i; Task.Run(() => { Console.WriteLine($"This is {k} running ThreadId={Thread.CurrentThread.ManagedThreadId.ToString("00")}"); Thread.Sleep(2000); }); } Console.Read(); } } }