使用wait() 和IllegalMonitorStateException 進行執行緒同步
在Java 中實作多執行緒時,可能會遇到javalang.IllegalMonitor.Iception異常當使用Thread.wait() 時。當執行緒嘗試呼叫 wait() 而不先取得其要等待的物件的鎖時,就會出現此問題。
要修正這種情況並確保正確的執行緒同步,您必須封閉wait() 呼叫在您希望等待的物件的同步程式碼區塊內:
synchronized (object) { object.wait(); }
在此區塊中,當前執行緒取得指定物件(object)的鎖,允許其等待直到收到通知而不拋出IllegalMonitorStateException。
另一個解決方案是利用 Java 的並發包,它提供了一種更安全、更用戶友好的執行緒管理方法。考慮利用 ConcurrentHashMap 類別或 Lock 介面來改進同步和效能。
以上是為什麼 `Thread.wait()` 會拋出 `IllegalMonitorStateException`,以及如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!