多執行緒中的join 方法

2021-10-23 16:18:06 字數 995 閱讀 4628

直接看**

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...