線程也可以喚醒,而不會被通知,中斷或逾時,即所謂的虛假喚醒 。 雖然這在實踐中很少會發生,但應用程式必須通過測試應該使線程被喚醒的條件來防範,并且如果條件不滿足則繼續等待。 換句話說,等待應該總是出現在循環中,就像這樣:
synchronized (obj) {
while (<condition does not hold>)
obj.wait(timeout);
... // Perform action appropriate to condition
}