執行緒join方法 小demo

2022-05-10 14:07:51 字數 1102 閱讀 1659

1.第乙個示例:

1

package

cn.threaddemo;23

public

class t implements

runnable 14}

1516

public

static

void main(string args) throws

exception

2324 }

輸出結果:

主線程中的a:0

t執行緒中的a: 1 2 3 4 5

這是因為,當主線程 main方法執行 system.out.println("主線程中的a:"+a); 這條語句時,t 執行緒還沒有真正開始執行,或許正在為它分配資源準備執行。因為為執行緒分配資源需要時間,而main方法執行完t.start()方法後繼續往下執行system.out.println(a);   這個時候得到的結果是a還沒有被改變的值0 。

2.question: 怎樣才能讓主線程中的輸出結果為5, join() 方法提供了這種功能,在第乙個**的基礎上進行修改如下:

1

package

cn.threaddemo;23

public

class t1 implements

runnable 14}

1516

public

static

void main(string args) throws

exception

2324

25 }

執行結果如下:

第乙個示例中t執行緒和主線程是交替執行,當主線程中加入t.join();語句後,執行緒執行順序變成了:先執行執行緒t, t執行緒執行結束後再接著執行主線程,由原來的執行緒交替並行執行變成了順序執行。

3. 另外一種方式實現主線程中輸出5:讓主線程休眠一定時間,這種方式不能保證t執行緒一定會比主線程先執行完,當主線程設定休眠時間比較長時,可以保證t執行緒先於主線程完成

當主線程設定休眠時間比較短時,就不一定能保證了

執行緒死鎖小demo

死鎖就是 a執行緒 使用a鎖 然後在使用b鎖 b執行緒 使用b鎖 然後在使用a鎖 要是a執行緒執行到a鎖的時候 想要呼叫b鎖,而這時b執行緒執行b鎖之後想要呼叫a鎖,因為相互的鎖都有在用,這就導致了相互等待鎖用完的情況,然後因為鎖又各自在用,是用不完的,這就導致了死鎖。以下是 示例 主線程呼叫 te...

多執行緒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...