在Java中,wait()
方法不能多次調用。當你調用一個對象的wait()
方法時,當前線程會釋放該對象的鎖并進入等待狀態,直到其他線程調用同一個對象的notify()
或notifyAll()
方法喚醒它。在這個等待期間,如果再次調用wait()
方法,將會導致IllegalMonitorStateException
異常,因為當前線程并沒有持有該對象的鎖。
為了避免這種情況,你可以在wait()
方法調用之前檢查線程是否已經處于等待狀態,或者使用synchronized
關鍵字和Lock
接口來更好地控制線程同步。