在Java多線程編程中,wait()和join()是兩個重要的方法。兩者都是線程的阻塞方法,但是它們的用法和作用有所不同。
wait()方法是Object類中的方法,需要在同步代碼塊或同步方法中調用。當一個線程執行到wait()方法時,它會釋放鎖,然后進入等待狀態。只有當其他線程調用了notify()或notifyAll()方法并且該線程重新獲取了該鎖時才能繼續執行。wait()方法的主要用途是實現線程之間的通信和協作。
synchronized(obj){ while(condition){ obj.wait(); } //執行其他代碼 }
join()方法是Thread類中的方法,用于讓當前線程等待調用join()方法的線程執行完畢。在join()方法中傳入的參數表示等待時間,如果超時還沒有執行完畢,則當前線程會繼續執行。如果沒有傳入參數,則會一直等待該線程執行完畢。
Thread t = new Thread(() ->{ //執行任務 }); t.start(); t.join(); //該語句會等待t線程執行完畢后才會執行
總的來說,wait()方法用于線程之間的通信和協作,而join()方法用于控制線程執行的先后順序。