在Java中,wait()
方法可以與synchronized
關鍵字和Object.notify()
或Object.notifyAll()
方法一起使用,以實現線程間的通信。當調用wait()
方法時,線程會釋放其占有的對象鎖并進入等待狀態,直到其他線程調用同一對象的notify()
或notifyAll()
方法喚醒它。
要設置wait()
方法的超時時間,可以使用Thread.sleep()
方法。以下是一個示例:
try {
// 1. 獲取對象鎖
synchronized (lock) {
// 2. 檢查條件是否滿足
while (!condition) {
// 3. 如果條件不滿足,則等待一段時間(單位:毫秒)
lock.wait(timeout);
}
// 4. 條件滿足,執行后續操作
}
} catch (InterruptedException e) {
// 處理異常
}
在這個示例中,lock
是用于同步的對象,condition
是等待的條件,timeout
是等待的超時時間(以毫秒為單位)。如果在timeout
毫秒內條件沒有滿足,線程將繼續執行后續操作。注意,當線程被喚醒后,還需要重新獲取對象鎖才能繼續執行。