C# 多線程學習系列二

一、關於前臺線程和後臺線程

1、簡介

CLR中線程分爲兩種類型,一種是前臺線程、另一種是後臺線程.

前臺線程:應用程序的主線程、Thread構造的線程都默認爲前臺線程

後臺線程:線程池線程都爲後臺線程

2、區別

前臺線程:前臺線程一般執行重要性很高的任務,至於什麼是重要性很高,這個需要結合業務綜合考慮,哪些操作是當前應用程序必須執行的.

後臺線程:這裏需要注意,當一個進程的所有前臺線程關閉時,也就是當應用程序推出的時候,無論後臺線程有沒有執行完它的任務,它都會被強制關閉.但是,當應用程序開啓時,它又會重新啓動.後臺線程一般執行不重要、耗時很短的任務,就算進程(應用程序)關閉了,導致它強制關閉,也不會造成影響的任務.比如系統清理程序等.

注意:一般進程會在所有的前臺線程執行完畢時關閉.

3、代碼演示區別

前臺線程:

        static void Main(string[] args)
        {
            var thread = new Thread(DoWork);
            thread.Start();
        }

        private static void DoWork()
        {
            Thread.Sleep(2000);
            Console.WriteLine("子線程處理完工作,已結束");
        }

子線程停留兩秒後,控制檯消失.

後臺線程:

        static void Main(string[] args)
        {
            var thread = new Thread(DoWork);
            thread.IsBackground = true;
            thread.Start();
        }

        private static void DoWork()
        {
            Thread.Sleep(2000);
            Console.WriteLine("子線程處理完工作,已結束");
        }

控制檯不等子線程處理完,直接消失.

效果很直觀,前臺線程會執行完才結束進程,但是後臺線程則不會.

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