我想知道爲什麼線程自發地從java中的wait()喚醒。
這是設計決定嗎?這是一個妥協嗎?線程爲什麼自發地從wait()中喚醒?
編輯:(從Java併發實踐,P 300)
wait
甚至被允許返回 「不合邏輯」 - 不響應任何 線程調用通知。
而且作者所述:
這就像一個鬆散的 連接,使鍾熄滅 烤麪包機當面包是準備好,但也 有時當它是沒有準備好。
這就是爲什麼你總是有如下代碼
synchronized(this){
while(!condition)
wait();
}
}
永不
synchronized(this){
if(!condition){
wait();
}
}
即使條件的轉換隻能從 false
到true
。
不,請參閱我的編輯.. – 2010-03-29 20:32:05
好的,我刪除了我的評論,因爲它看起來像你是對的。 – 2010-03-29 20:43:22