首頁  >  文章  >  Java  >  java中wait()和join()方法的差別是什麼

java中wait()和join()方法的差別是什麼

青灯夜游
青灯夜游原創
2018-12-14 15:28:399412瀏覽

java中wait()和join()方法的區別是:存在不同的java套件中;wait()方法用於線程間通信,它所施加的等待狀態的線程可以被啟動;join()方法用於在多個線程之間添加排序,它所施加的等待不可以被打破。

java中wait()和join()方法的差別是什麼

java中的wait()方法

wait()方法的作用是讓目前執行緒進入等待狀態,wait()會與notify()和notifyAll()方法一起使用。

notify()和notifyAll()方法的作用是喚醒等待中的線程,notify()方法:喚醒單一線程,notifyAll()方法:喚醒所有執行緒。

java中的join()方法

join()方法是等待這個執行緒結束,完成其執行。它的主要起同步作用,使執行緒之間的執行從「並行」變成「串列」。

也就是說,當我們在執行緒A中呼叫了執行緒B的join()方法時,執行緒執行過程改變:執行緒A,必須等待執行緒B執行完畢後,才可以繼續執行下去。

wait()方法和join()方法的相似處

1、wait()和join()方法都用於暫停Java中的目前線程,進入等待狀態。

2、在Java中都可以呼叫interrupt()方法中斷wait()和join()的執行緒狀態。

3、wait()和join()都是非靜態方法。

4、wait()和join()都在Java中重載。 wait()和join()沒有超時,但接受超時參數。

儘管wait()方法和join()方法有相似之處,但wait()方法和join()方法還是存在差異的。

wait()方法和join()方法之間的差異

java中wait()和join()方法的差別是什麼

1 、存在不同的java套件中(最明顯的區別)

wait()方法需要在java.lang.Object類別中宣告;而,join()方法是在java. lang.Thread類別中聲明。

2、使用目的不同

wait()方法用於執行緒間通訊;而join()方法用於在多個執行緒之間新增排序,第二個線程需要在第一個執行緒執行完成後才能開始執行。

3、喚醒執行緒方面的差異

我們可以透過使用notify()和notifyAll()方法啟動一個透過wait()方法進入等待狀態的執行緒。但是我們不能打破join()方法所施加的等待,除非或中斷呼叫了連接的執行緒已執行完了。

4、同步上下文(最重要的區別)

wait()方法必須從同步(synchronized)的上下文調用,即同步區塊或方法,否則會拋出IllegalMonitorStateException異常。

但,在Java中有或沒有同步的上下文,我們都可以呼叫join()方法。

總結:以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。

以上是java中wait()和join()方法的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn