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