多執行緒學習 方法join的使用

2021-07-08 19:26:26 字數 1281 閱讀 6511

在很多情況下,主線程建立並啟動子執行緒,如果子執行緒要進行大量的耗時計算,主線程往往將早於子執行緒結束之前結束。這時,如果主線程想等待子執行緒執行完成之後再結束,比如子執行緒處理乙個資料,主線程要取得這個資料的值,就要用到join()方法了。方法join()的作用是等待執行緒物件銷毀。

public

class

myobject

public

intgetvalue()

}

沒有使用join方法的情況

這種情況下演示,需求是主線程要在子執行緒給myobject賦值後拿到myobject物件的值,沒有使用join()方法會導致主線程會在子執行緒之前就結束。

子執行緒的**:

public

class

mythread

extends

thread

public

void

run()

}

執行的**

public

class

run

}

執行結果為:

get value:0 main thread end.

set value:100

2.用join()方法類解決

join()方法的作用是使所屬的執行緒物件x正常執行run()方法中的人物,而使當前執行緒z

進行無限期的阻塞,等待執行緒x銷毀後在繼續執行執行緒z後面的**。使執行緒具有排隊執行的作用,有著類似同步的執行效果。

public

class

run catch (interruptedexception e)

}}

執行結果:

set value:100

get value:100

在join過程中,如果當前執行緒物件被中斷,則當前執行緒出現異常,interruptedexception。

方法join(long)中的引數是設定等待的時間。

方法join(long)的功能在內部是使用wait(long)方法來實現的,所以join(long)方法具有釋放鎖的特點,而thread.sleep(long)方法具有不釋放鎖的特點。

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

Java多執行緒 方法join的使用

主線程啟動子執行緒,如果子執行緒中要進行大量的耗時運算,主線程會早於子執行緒結束,這時候主線程如果想等待子執行緒完成之後再執行,就需要join 方法 package top.yuyufeng.demo.thread author yuyufeng date 2019 2 22.public clas...