今天是第一次在c#中接觸thread,自己研究了一下其中thread.join()這個方法,下面談談自己的理解。
thread.join()在msdn中的解釋很模糊:blocks the calling thread until a thread terminates
有兩個主要問題:1.什麼是the calling thread?
2.什麼是a thread?
首先來看一下有關的概念: 我們執行乙個.exe檔案實際上就是開啟了乙個程序,同時開啟了至少乙個執行緒,
但是真正幹活的是執行緒,就好比乙個team有好幾個人,但是真正幹活的是人不是team.
在執行main函式,我們稱作mainthread.假如我們在main函式中宣告了乙個thread,稱作newthread,並且呼叫了
newthread.start()的方法,那麼 mainthread在處理main函式裡面的**時遇到newthread.start()時,就會
去呼叫newthread.
基於上面的討論,我們可以得出結論:在我們剛才的例子中the calling thread就是mainthread,而a thread
指的洽洽就是mainthread呼叫的newthread執行緒。
現在回到msdn的解釋,我們可以這麼翻譯:當newthread呼叫join方法的時候,mainthread就被停止執行,
直到newthread執行緒執行完畢
。這樣就好理解了吧o(∩_∩)o哈哈~
好了,前面分析完了,現在來看測試用例吧:
titleusing system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading;
namespace test
console.writeline(thread.currentthread.name + " has finished"); }
static void main(string args)
else
} console.read(); }
} }下面是測試的結果:
結論:從測試中我們可以很清楚的看到mainthread在newthread.join被呼叫後被阻塞,直到newthread
執行完畢才繼續執行。
執行緒C 執行緒聯合join
執行緒聯合join join 方法的作用是呼叫執行緒等待該執行緒完成後,才能繼續用下執行。下面我寫了乙個簡單例子,用來體現出join 方法是如何使用的。package com.yzy.text public class threadjoin catch interruptedexception e ...
C 執行緒的Join方法
在.net中,join方法主要是用來阻塞呼叫執行緒,直到某個執行緒終止或經過了指定時間為止。join方法的宣告如下 public void join public bool join int millisecondstimeout public bool join timespan timeout ...
C 多執行緒 Join
using system using system.collections.generic using system.linq using system.text using system.threading namespace test console.writeline thread.curre...