国产97色在线|亚洲-欧美人妻另类制服丝袜-欧美人成国产91视频-殷素素一女战二夫|www.ycjrc.net

C# Thread.Join() 的用法, 線程按順序執行

發布時間:2020-12-08 11:39 作者:獨孤劍 閱讀:2590

Thread.Join() 在MSDN中的解釋:Blocks the calling thread until the thread represented by this instance terminates.(在此實例表示的線程終止前,阻止調用線程。)

實例應用
Test2 在 thread1.Join() 被調用后被阻塞,直到 Test1 執行完畢才繼續執行。
        static void Main(string[] args)
        {
            Thread thread1 = new Thread(new ThreadStart(Test1));
            thread1.Start();
            thread1.Join();

            Thread thread2 = new Thread(new ThreadStart(Test2));
            thread2.Start();
            thread2.Join();

            Console.WriteLine("finished.");
            Console.Read();
        }

        static void Test1()
        {
            Console.WriteLine("t1 " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"));
            Thread.Sleep(500);
            Console.WriteLine("t1 " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"));
            Thread.Sleep(500);
            Console.WriteLine("t1 " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"));
            Thread.Sleep(500);
            Console.WriteLine("t1 " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"));
            Thread.Sleep(500);
            Console.WriteLine("t1 " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"));
            Thread.Sleep(500);
            Console.WriteLine("t1 " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"));
            Thread.Sleep(500);
            Console.WriteLine("t1 " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"));
            Thread.Sleep(500);
            Console.WriteLine("t1 " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"));
            Thread.Sleep(500);
            Console.WriteLine("t1 " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"));
            Thread.Sleep(500);
            Console.WriteLine("t1 " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"));
            Thread.Sleep(500);
        }

        static void Test2()
        {
            Console.WriteLine("t2 " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"));
            Thread.Sleep(500);
            Console.WriteLine("t2 " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"));
            Thread.Sleep(500);
            Console.WriteLine("t2 " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"));
            Thread.Sleep(500);
            Console.WriteLine("t2 " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"));
            Thread.Sleep(500);
            Console.WriteLine("t2 " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"));
            Thread.Sleep(500);
            Console.WriteLine("t2 " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"));
            Thread.Sleep(500);
            Console.WriteLine("t2 " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"));
            Thread.Sleep(500);
            Console.WriteLine("t2 " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"));
            Thread.Sleep(500);
            Console.WriteLine("t2 " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"));
            Thread.Sleep(500);
            Console.WriteLine("t2 " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"));
            Thread.Sleep(500);
        }
thread1 啟動后,調用 Join() 方法,直到 thread1 的任務結束,才輪到 thread2 啟動,然后 thread2 也開始任務。實例中,兩個線程就按著嚴格的順序來執行了。如果 thread2 的執行需要依賴于 thread1 中的完整數據的時候,這種方法就可以很好的確保兩個線程的同步性。

微信打賞, 微信掃一掃

支付寶打賞, 支付寶掃一掃

如果文章對您有幫助,歡迎給作者打賞

作者最新文章
開發過程中解決360兼容模式瀏覽器的方法
云南象群向西南方向遷移,云南離群獨象距離象群約12公里
吉林做網站最低價格,吉林企業網站建設價格低至500元起
守象人直擊云南象群最新動向
網站影響百度蜘蛛抓取量的因素有哪些?為什么我的網站Baidu蜘蛛來的次數少?
企業名片
在線客服