在很多情況下,主線程建立並啟動子執行緒,如果子執行緒要進行大量的耗時計算,主線程往往將早於子執行緒結束之前結束。這時,如果主線程想等待子執行緒執行完成之後再結束,比如子執行緒處理乙個資料,主線程要取得這個資料的值,就要用到join()方法了。方法join()的作用是等待執行緒物件銷毀。
public
class
myobject
public
intgetvalue()
}
沒有使用join方法的情況
這種情況下演示,需求是主線程要在子執行緒給myobject賦值後拿到myobject物件的值,沒有使用join()方法會導致主線程會在子執行緒之前就結束。子執行緒的**:
public
class
mythread
extends
thread
public
void
run()
}
執行的**
public
class
run
}
執行結果為:2.用join()方法類解決get value:0 main thread end.
set value:100
join()方法的作用是使所屬的執行緒物件x正常執行run()方法中的人物,而使當前執行緒z進行無限期的阻塞,等待執行緒x銷毀後在繼續執行執行緒z後面的**。使執行緒具有排隊執行的作用,有著類似同步的執行效果。
public
class
run catch (interruptedexception e)
}}
執行結果:在join過程中,如果當前執行緒物件被中斷,則當前執行緒出現異常,interruptedexception。set value:100
get value:100
方法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...