直接看**
package net.csdn.demo01;
public
class
mythread
extends
thread
}}
package net.csdn.demo01;
public
class
testmythread
}}
執行結果
張三:
1張三:
2張三:
3張三:
4張三:
5張三:
6張三:
7張三:
8張三:
9張三:
10main:
1main:
2main:
3main:
4main:
5main:
6main:
7main:
8main:
9main:
10李四:
1李四:
2李四:
3李四:
4李四:
5李四:
6李四:
7李四:
8李四:
9李四:
10process finished with exit code 0
分析:在主線程中呼叫了join()方法,程式會從主線程依次向下執行,先後建立了t1和t2兩個執行緒,接著執行到t1.start(),此時t1不一定拿到執行權,假設沒有執行權,所以接著向下執行,執行到t1.join()時會釋放cpu的執行權,主線程進入阻塞狀態。直到t1執行緒的任務執行完後才會接著執行主線程,所以又會向下執行,會隨機列印主線程的i和t2執行緒的i,這裡測試的資料量小,所以達不到想要的效果,大家測試的時候可以將資料改大一點。
結論:在某個執行緒中執行了另乙個執行緒的join()方法,例如a執行緒中執行了b.join(),那麼a就要等b執行完,才會執行自己。
多執行緒Join方法
天意憐幽草,人間重晩晴 a.sleep 5000 讓執行緒睡5秒但是,如果你不知道執行緒b需要執行多長時間,並且在a中需要使用到b中的結果,那麼,這時你就可以使用join方法 下面是具體的例子 可以看到,join long time 方法內部其實是呼叫了wait long time 方法,我們了解到...
多執行緒join 方法
直接 public static void main string args for thread t list int n 0 for thread t list catch interruptedexception e system.out.println 完全結束 static class m...
多執行緒中的join方法的含義
public class worker catch exception e list1.add random.nextint 100 public void stagetwo catch exception e list2.add random.nextint 100 public void pro...