如果使用在第二節定義的MyThread類,傳遞參數會顯示更簡單 ,代碼如下:
class NewThread : MyThread
{
private String p1;
private int p2;
public NewThread(String p1, int p2)
{
this.p1 = p1;
this.p2 = p2;
}
override public void run()
{
Console.WriteLine(p1);
Console.WriteLine(p2);
}
}
NewThread newThread = new NewThread("hello world", 4321);
newThread.start();
四 、前台和後台線程
使用Thread建立的線程默認情況下是前台線程,在進程 中,只要有一個前台線程未退出,進程就不會終止。主線程就是一個前台線程。 而後台線程不管線程是否結束,只要所有的前台線程都退出(包括正常退出和異 常退出)後,進程就會自動終止。一般後台線程用於處理時間較短的任務,如在 一個Web服務器中可以利用後台線程來處理客戶端發過來的請求信息。而前台線程 一般用於處理需要長時間等待的任務,如在Web服務器中的監聽客戶端請求的程序 ,或是定時對某些系統資源進行掃描的程序。下面的代碼演示了前台和後台線程 的區別。
public static void myStaticThreadMethod()
{
Thread.Sleep(3000);
}
Thread thread = new Thread(myStaticThreadMethod);
// thread.IsBackground = true;
thread.Start();
如果運行上面的代碼,程序會等待3秒後退出 ,如果將注釋去掉,將thread設成後台線程,則程序會立即退出。
要注意 的是,必須在調用Start方法之前設置線程的類型,否則一但線程運行,將無法改 變其類型。
通過BeginXXX方法運行的線程都是後台線程。