在Java中,join()
方法確實會阻塞當前線程。當一個線程調用另一個線程的join()
方法時,當前線程會等待被調用線程執行完畢后再繼續執行。這意味著當前線程會被阻塞,直到被調用線程執行完畢。
join()
方法有三種重載形式:
public final void join() throws InterruptedException
:讓當前線程等待調用join()
方法的線程執行完畢后再繼續執行。public final void join(long millis) throws InterruptedException
:讓當前線程等待調用join()
方法的線程指定的毫秒數。如果在指定的時間內,被調用線程還沒有執行完畢,那么當前線程會繼續執行。public final void join(long millis, int nanos) throws InterruptedException
:讓當前線程等待調用join()
方法的線程指定的毫秒數加納秒數。如果在指定的時間內,被調用線程還沒有執行完畢,那么當前線程會繼續執行。需要注意的是,join()
方法不會釋放鎖,因此在同步代碼塊或同步方法中使用join()
方法時要特別小心,以避免死鎖。