C# 多執行緒學習系列二
阿新 • • 發佈:2018-11-14
一、關於前臺執行緒和後臺執行緒
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("子執行緒處理完工作,已結束"); }
控制檯不等子執行緒處理完,直接消失.
效果很直觀,前臺執行緒會執行完才結束程序,但是後臺執行緒則不會.