C 執行緒的Join方法

2022-01-23 00:03:53 字數 1091 閱讀 4975

在.net中,join方法主要是用來阻塞呼叫執行緒,直到某個執行緒終止或經過了指定時間為止。join方法的宣告如下:

public

void

join();

public

bool join(int

millisecondstimeout);

public

bool join(timespan timeout);

先看一段簡單的**,再來理解join方法到底是怎麼用的,**如下:

static

void

main()

);console.writeline(""

, stopwatch.elapsedmilliseconds);

console.read();

}static

void

run()

上面的**執行的結果大概為25秒鐘,可以推斷執行緒陣列是依次去執行run()方法的。t.join()會阻塞執行main()方法的執行緒,也就是主線程,直到執行緒t執行完畢,才會啟動下乙個執行緒,繼續阻塞主線程,直到執行緒陣列全部執行完畢,主線程才會繼續執行,最後輸出總共使用時間。

下面我們稍稍改動**,來驗證推斷,修改後的**如下:

static

void

main()

);console.writeline(""

, stopwatch.elapsedmilliseconds);

console.read();

}static

void

run()

", thread.currentthread.name);

}

執行的結果每隔5秒,依次輸出當前執行緒的名稱,最後輸出總共使用時間25033.

理解了join()方法,過載版本也就不難理解了。再來看下join(int millisecondstimeout)方法,方法摘要為,如果執行緒已終止,則為 true;如果執行緒在經過了 millisecondstimeout 引數指定的時間量後未終止,則為 false。比如上面的**使用t.join(1000),只會阻塞主線程1秒。

C 多執行緒JOIN方法初探

說明 剛接觸多執行緒時,弄不明白join 的作用,查閱了三本書,都不明不白。後來經過自己的一番試驗,終於弄清了join 的本質。大家看看我這種寫法是否易懂,是否真的寫出了join 的本質,多提寶貴意見。試一試 執行緒的插入 c 初學課堂 注意新增命名空間 using system.threading...

C 多執行緒JOIN方法初探

說明 剛接觸多執行緒時,弄不明白join 的作用,查閱了三本書,都不明不白。後來經過自己的一番試驗,終於弄清了join 的本質。大家看看我這種寫法是否易懂,是否真的寫出了join 的本質,多提寶貴意見。試一試 執行緒的插入 c 初學課堂 注意新增命名空間 using system.threading...

Java執行緒的join 方法

join 把指定的執行緒加入到當前執行緒,可以將兩個交替執行的執行緒合併為順序執行的執行緒。比如在主線程中呼叫了執行緒a的join 方法 a.join 則直到執行緒a執行完畢後,才會繼續執行執行緒主線程。t.join 等待執行緒 t 執行完畢,再執行呼叫t執行緒方法的執行緒。大概就是這個意思 t.j...