1
我從同步塊調用notify()方法,我得到一個java.lang.IllegalMonitorStateException。我在這個特定的對象上同步,所以我沒有看到我錯在哪裏。我的代碼是這樣的:通知()調用IllegalMonitorStateException
public void setSynchronizer() {
synchronized (_synchronizer) {
_synchronizer = true;
_synchronizer.notify();
}
}
有人可以幫我嗎?
這裏應該添加註釋,即在可變變量上同步不是一個好主意的地方。 – Holger
+1「只對'final變量」使用'synchronized'是一個很好的口頭禪。我還沒有找到一個很好的理由偏離這個規則。 –
謝謝!你的評論幫了我很多。問題在於賦值「_synchronizer = true;」爲_synchronizer分配了一個新對象,所以同步無效。我已將_syncronizer更改爲Boolean []。新狀態被分配給_syncronizer [0],所以對象保持不變。 – user3032925