執行緒之join

2021-08-19 21:20:04 字數 821 閱讀 6572

thread.join():

通常,在主線程中啟動子執行緒,但當子執行緒執行耗時較大時,可能造成主線程先於子執行緒結束。如果子執行緒需要用到子執行緒的結果,由於主線程先於子執行緒結束,所有主線程將得不到子執行緒的結果。

例如:public class threadtest implements runnable

}public static void main(string args) throws exception

}

程式中主線程啟動乙個子執行緒進行計數,同時輸出計數後的值,按照**邏輯得出的值應該是5,但是執行後會發現,值不是5.原因就是:主線程先於子執行緒結束,當system.out.println(a);

已執行了,而子執行緒還在計數,所有結果與預計結果不一致。

解決方法:thread.join()

system.out.println(a);

前面加上thread.join()

join()方法保證在子執行緒執行結束後主執行緒再接著執行。

假設主線程為a執行緒,子執行緒為b執行緒,

join()保證了在b執行緒執行結束後再繼續執行a執行緒。

官方解釋:

waits for this thread to die.等待這個執行緒結束,也就是說當前執行緒等待這個執行緒結束後再繼續執行。

多執行緒之Join方法

執行緒加入 join 方法,等待其他執行緒終止。在當前執行緒中呼叫另乙個執行緒的join 方法,則當前執行緒轉入阻塞狀態,直到另乙個程序執行結束,當前執行緒再由阻塞轉為就緒狀態。package thread public class threadjointest class threadjoin i...

Java多執行緒之join

1.join方法只有在繼承了thread類的執行緒中才有。2.執行緒必須要start 後再join才能起作用。將另外乙個執行緒join到當前執行緒,則需要等到join進來的執行緒執行完才會繼續執行當前執行緒。package thread.join class sleeper extends thre...

執行緒之插隊 join方法

在現實生活中,有很多人,存在很多人插隊,例如 下課去食堂吃飯,別人都在排隊,打飯的阿姨你是家親戚,你到視窗,阿姨就給你打了慢慢的飯菜,讓別人羨慕,在程式中也有這種情況出現,a正在執行,b要插隊,a就得停下來,等b執行結束在去執行a具體看如下 public class testjoin impleme...