C#多线程JOIN方法初探
[說明:剛接觸多線程時,弄不明白Join()的作用,查閱了三本書,都不明不白。后來經過自己的一番試驗,終于弄清了Join()的本質。大家看看我這種寫法是否易懂,是否真的寫出了Join()的本質,多提寶貴意見。]
Thread類的Join()方法能夠將兩個交替執行的線程合并為順序執行的線程。比如在線程B中調用了線程A的Join()方法,線程A將插入線程B之前,直到線程A執行完畢后,才會繼續執行線程B。
試一試:線程的插入
//《C#初學課堂》
//注意添加命名空間
using System.Threading;
static void Main(string[] args)
{
//線程A
Thread ThreadA = new Thread(delegate()
{
for (int i = 0; i <= 100000000; i++)
{
if (i % 1000000 == 0)
{
Console.Write('A');
}
}
});
//線程B
Thread ThreadB = new Thread(delegate()
{
for (int i = 0; i <= 50000000; i++)
{
if (i % 1000000 == 0)
{
Console.Write('B');
}
}
//在這里插入線程A
ThreadA.Join();
for (int i = 0; i <= 50000000; i++)
{
if (i % 1000000 == 0)
{
Console.Write('b');
}
}
});
//啟動線程
ThreadA.Start();
ThreadB.Start();
}
運行結果如下,你能分析清楚為什么嗎?
由運行結果可以看出,一開始兩個線程交替進行,當線程B執行到語句“ThreadA.Join()”時,線程A被插入到線程B之前,兩個線程合并到一起,變為順序執行,直到執行完線程A中的所有語句,才去執行線程B中剩余的語句。
換句話說,當我們在線程B中調用ThreadA.Join()時,該方法只有在線程ThreadA執行完畢之后才會返回。Join()函數還可以接受一個表示毫秒數的參數,當達到指定時間后,如果線程A還沒運行完畢,那么Join函數將返回,這時線程A和線程B再次處于交替運行狀態中。
http://www.cnblogs.com/millen/archive/2009/09/07/1520353.html
?
總結
以上是生活随笔為你收集整理的C#多线程JOIN方法初探的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 生成迷宫/C++
- 下一篇: C#基础:Lambda表达式