如果讀者 的方法很簡單,或出去某種目的,也可以通過匿名委托或Lambda表達式來為 Thread的構造方法賦值,代碼如下:
Thread thread3 = new Thread(delegate() { Console.WriteLine("匿名委托"); });
thread3.Start();
Thread thread4 = new Thread(( ) => { Console.WriteLine("Lambda表達式"); });
thread4.Start();
其中Lambda表達式前面的( )表示沒有參數。
為了區分 不同的線程,還可以為Thread類的Name屬性賦值,代碼如下:
Thread thread5 = new Thread(() => { Console.WriteLine(Thread.CurrentThread.Name); });
thread5.Name = "我的Lamdba";
thread5.Start();
如果將上面thread1至 thread5放到一起執行,由於系統對線程的調度不同,輸出的結果是不定的,如圖 1是一種可能的輸出結果。
圖1
二、定義一個線程類
我們可以將Thread類封裝在一 個MyThread類中,以使任何從MyThread繼承的類都具有多線程能力。MyThread類 的代碼如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace MyThread
{
abstract class MyThread
{
Thread thread = null;
abstract public void run();
public void start()
{
if (thread == null)
thread = new Thread(run);
thread.Start();
}
}
}