網站首頁 教育 學前教育 精緻生活 飲食養生 命理 科普教育 金融 歷史 影視 數碼 熱門資訊
當前位置:生活百科站 > 精緻生活 > 

Wait概述是什麼

欄目: 精緻生活 / 釋出於: / 人氣:1.05W
Wait概述是什麼

1、public final voidwaitthrowsInterruptedException在其他執行緒呼叫此物件的notify方法或notifyAll方法前,導致當前執行緒等待。換句話說,此方法的行為就好像它僅執行wait呼叫一樣。當前執行緒必須擁有此物件監視器。該執行緒釋出對此監視器的所有權並等待,直到其他執行緒通過呼叫notify方法,或notifyAll方法通知在此物件的監視器上等待的執行緒醒來。然後該執行緒將等到重新獲得對監視器的所有權後才能繼續執行。對於某一個引數的版本,實現中斷和虛假喚醒是可能的,而且此方法應始終在迴圈中使用:synchronized(obj){while(conditiondoesnothold)obj。wait;丟擲:IllegalMonitorStateException-如果當前執行緒不是此物件監視器的所有者。InterruptedException-如果在當前執行緒等待通知之前或者正在等待通知時,任何執行緒中斷了當前執行緒。在丟擲此異常時,當前執行緒的中斷狀態被清除。

2、當前執行緒必須擁有此物件監聽器。此方法導致當前執行緒(稱之為T)將其自身放置在物件的等待集中,然後放棄此物件上的所有同步要求。出於執行緒排程目的,在發生以下四種情況之一前,執行緒T被禁用,且處於休眠狀態:其他某個執行緒呼叫此物件的notify方法,並且執行緒T碰巧被任選為被喚醒的執行緒。

3、大約已經到達指定的實際時間。但是,如果timeout為零,則不考慮實際時間,在獲得通知前該執行緒將一直等待。

4、然後,從物件的等待集中刪除執行緒T,並重新進行執行緒排程。然後,該執行緒以常規方式與其他執行緒競爭,以獲得在該物件上同步的權利;一旦獲得對該物件的控制權,該物件上的所有其同步宣告都將被恢復到以前的狀態,這就是呼叫wait方法時的情況。然後,執行緒T從wait方法的呼叫中返回。所以,從wait方法返回時,該物件和執行緒T的同步狀態與呼叫wait方法時的情況完全相同。在沒有被通知、中斷或超時的情況下,執行緒還可以喚醒一個所謂的虛假喚醒(spurious wakeup)。雖然這種情況在實踐中很少發生,但是應用程式必須通過以下方式防止其發生,即對應該導致該執行緒被提醒的條件進行測試,如果不滿足該條件,則繼續等待。

Tags:Wait 概述