在.net中,join方法主要是用來阻塞呼叫執行緒,直到某個執行緒終止或經過了指定時間為止。join方法的宣告如下:
publicvoid
join();
public
bool join(int
millisecondstimeout);
public
bool join(timespan timeout);
先看一段簡單的**,再來理解join方法到底是怎麼用的,**如下:
staticvoid
main()
);console.writeline(""
, stopwatch.elapsedmilliseconds);
console.read();
}static
void
run()
上面的**執行的結果大概為25秒鐘,可以推斷執行緒陣列是依次去執行run()方法的。t.join()會阻塞執行main()方法的執行緒,也就是主線程,直到執行緒t執行完畢,才會啟動下乙個執行緒,繼續阻塞主線程,直到執行緒陣列全部執行完畢,主線程才會繼續執行,最後輸出總共使用時間。
下面我們稍稍改動**,來驗證推斷,修改後的**如下:
staticvoid
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...