6 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個(gè)贊
虛假喚醒就是一些obj.wait()會(huì)在除了obj.notify()和obj.notifyAll()的其他情況被喚醒,而此時(shí)是不應(yīng)該返回的,所以要加條件判斷。如下是一個(gè)很好的代碼實(shí)踐:
[code]
synchronized (obj) {
while ()
obj.wait();
... // Perform action appropriate to condition
}
[/code]

TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個(gè)贊
A thread wake up
without being notified, interrupted, or timing out, is so-called spurious wakeup

TA貢獻(xiàn)1735條經(jīng)驗(yàn) 獲得超5個(gè)贊
有一個(gè)情形就會(huì),很多阻塞的api采用輪詢的方式來監(jiān)測(cè)是否有中斷調(diào)用,在輪詢過程中,線程從活動(dòng)到休眠,又從休眠到活動(dòng),如此往復(fù)的檢查中斷,但是從整個(gè)api的角度來看,這個(gè)線程是處于休眠狀態(tài),但是用Thread相關(guān)方法判斷,則可能會(huì)出現(xiàn)線程是alive的
如果采用操作系統(tǒng)調(diào)用才實(shí)現(xiàn)限時(shí)、可中斷的api則不會(huì)有這樣的問題

TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個(gè)贊
樓上所說,這種實(shí)現(xiàn)是會(huì)出問題的,因?yàn)樵谳喸兦袚Q時(shí),可能會(huì)漏掉notify的中斷,從而無休止的休眠下去。

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超10個(gè)贊
[quote]這種實(shí)現(xiàn)是會(huì)出問題的,因?yàn)樵谳喸兦袚Q時(shí),可能會(huì)漏掉notify的中斷,從而無休止的休眠下去。[/quote]
wait方法用這種方式是有問題,非wait的阻塞接口可以這樣實(shí)現(xiàn)
添加回答
舉報(bào)