前台線程和后台線程區別與使用技巧


概念:.

線程有兩種:前台線程和后台線程。區別是:應用程序必須運行完所有的前台線程才可以退出;而對於后台線程,應用程序則可以不考慮其是否已經運行完畢而直接退出,所有的后台線程在應用程序退出時都會自動結束。

.net環境使用Thread建立的線程默認情況下是前台線程,即線程屬性IsBackground=false,在進程中,只要有一個前台線程未退出,進程就不會終止。主線程就是一個前台線程。而后台線程不管線程是否結束,只要所有的前台線程都退出(包括正常退出和異常退出)后,進程就會自動終止。

 

 因此使用技巧如下:

一般后台線程用於處理時間較短的任務,如在一個Web服務器中可以利用后台線程來處理客戶端發過來的請求信息。而前台線程一般用於處理需要長時間等待的任務,如在Web服務器中的監聽客戶端請求的程序,或是定時對某些系統資源進行掃描的程序。

 

下面的代碼演示了前台和后台線程的區別:

public static void myStaticThreadMethod()
{
    Thread.Sleep(3000);
}
Thread thread = new Thread(myStaticThreadMethod);
// thread.IsBackground = true;
thread.Start()
如果運行上面的代碼,程序會等待3秒后退出,如果將注釋去掉,將thread設成后台線程,則程序會立即退出
要注意的是,必須在調用Start方法之前設置線程的類型,否則一但線程運行,將無法改變其類型
通過BeginXXX方法運行的線程都是后台線程

參選:http://www.cnblogs.com/li0803/archive/2008/10/30/1322819.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM