C#理解Thread.Sleep方法(2)
(文轉自http://blog.csdn.net/jhycjhyc/article/details/7173747)
using System
using System.Threading;
namespace ThreadTest
{
public class A
{
public static void B()
{
while (true)
{
Console.WriteLine("A.B is running in its own thread.");
}
}
}
public class C
{
public static void Main()
{
Thread t = new Thread(new ThreadStart(A.B));
t.Start();
Thread.Sleep(5);
t.Abort();
t.Join();
Console.WriteLine("A.B has finished");
Console.ReadLine();
}
}
}
執行後顯示若干行"A.B is running in its own thread."和一行"A.B has finished";
若取消程式中的“Thread.Sleep(5);”句,則執行後只顯示"A.B has finished"。
理解:如無“Thread.Sleep(5);”句,則t執行緒一開始後即被中止,根本沒有執行到其中的輸入字串的程式碼,但增加此句後,使主執行緒(執行Main方法的執行緒)休眠(sleep)了5毫秒才執行t.Abort();,這段5毫秒的時間使t執行緒有時間執行了輸出字串程式碼,由此可見該程式執行完t.start().後,有兩個並行的執行緒,主執行緒和t執行緒,兩者各自執行,可視為並行,而主執行緒中有控制t執行緒的語句,主執行緒休眠5毫秒時,t執行緒繼續執行.而如果沒有休眠指令,在主執行緒中由於t.start()和指令的下一條就是t.Abort()和t.Join(),所以使得已經在同步執行t執行緒立即停止了.通過該段小程式,可以幫助我們瞭解多執行緒的概念.