1、線程池是單例的,全局唯一的,設置線程池最大活躍線程數是5,設置後,允許同時併發的Task只有5個,我們開啟100個task去做任務,從最後的輸出結果看到,雖然開啟了100個task,但是線程id始終是那5個如圖所示 2、結論:證明task是來源於線程池的,而且線程是重用的 ...
1、線程池是單例的,全局唯一的,設置線程池最大活躍線程數是5,設置後,允許同時併發的Task只有5個,我們開啟100個task去做任務,從最後的輸出結果看到,雖然開啟了100個task,但是線程id始終是那5個如圖所示
2、結論:證明task是來源於線程池的,而且線程是重用的
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(); } } }