當主線程想等到子線程執行完以後,再進行主線程的工做。好比子線程在處理一個數據,主線程想要取得這個數據中的值,就要用到join了。join做用是等待線程對象銷燬。
join與synchronized的區別是,join在內部使用wait方法進行等待,而synchronized關鍵字使用的是"對象監視器"原理作爲同步
join(millis):若是說join()是無限期了等待。那麼millis就是一個等待期限了,期限已到那麼主線程就再也不等待了,與sleep的區別是,join釋放鎖,而sleep時不釋放鎖
測試1: java
public static void main(String[] args) throws InterruptedException { Thread t = new Thread(){ public void run() { try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("thread end"); }; }; t.start(); t.join(); System.out.println("main end"); }
結果:
thread end
main end 測試