天天看點

java多線程 - 虛假喚醒

線程也可以喚醒,而不會被通知,中斷或逾時,即所謂的虛假喚醒 。 雖然這在實踐中很少會發生,但應用程式必須通過測試應該使線程被喚醒的條件來防範,并且如果條件不滿足則繼續等待。 換句話說,等待應該總是出現在循環中,就像這樣:

synchronized (obj) {
         while (<condition does not hold>)
             obj.wait(timeout);
         ... // Perform action appropriate to condition
     }