1. 程式人生 > >C#理解Thread.Sleep方法(2)

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執行緒立即停止了.通過該段小程式,可以幫助我們瞭解多執行緒的概念.