證明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();
        }
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章