我在我的代碼中使用了wait()和notify(),並且在另一個線程上的鎖對象上實際調用了一個等待之前,執行可能會先到達notify()。我在鎖對象中創建了一個「isWaitCalled」標誌,並且如果wait()沒有被調用,就使用它跳過notify()調用。這個標誌「isWaitCalled」是多餘的嗎?在等待其中一個場景之前調用notify()是否可以? 線程A:在調用wait()之前調用鎖對象的notify()是否可以?
synchronized (syncObject) {
try {
if (!syncObject.isLoadComplete) {
syncObject.isWaitCalled = true;
syncObject.wait();
}
} catch (Exception ex) {
}
}
ThreadB:
synchronized (syncObject) {
try {
if (!syncObject.isLoadComplete) {
syncObject.isLoadComplete =true;
if (syncObject.isWaitCalled) {
syncObject.notify();
}
}
} catch (Exception ex) {
}
}
。如果樹倒在森林裏,但沒有一個人聽到它,它發出聲音? – erickson
這就是我的想法。想要確認,並不想推測。 – arun8