在Java中,wait()
方法用于讓當前線程等待,直到滿足指定的條件。為了使用wait()
方法,你需要在一個對象上調用它,并且通常與synchronized
關鍵字和notify()
/notifyAll()
方法一起使用。
以下是一個簡單的示例:
class SharedResource {
private boolean condition = false;
public synchronized void waitForCondition() throws InterruptedException {
while (!condition) {
wait(); // 當前線程等待,直到條件滿足
}
// 條件滿足,繼續執行
}
public synchronized void setCondition(boolean value) {
this.condition = value;
notify(); // 通知等待的線程條件已滿足
}
}
在這個示例中,waitForCondition()
方法會一直等待,直到condition
變量變為true
。當setCondition()
方法被調用并設置condition
為true
時,它會調用notify()
方法來喚醒等待的線程。
請注意,wait()
方法必須在synchronized
塊或方法中調用,因為它需要獲取對象的監視器鎖。此外,調用wait()
方法時,線程會釋放對象監視器鎖,并在被喚醒后重新獲取它。
總之,Java中的wait()
方法確實可以讓線程等待,直到滿足指定的條件。但是,為了正確使用它,你需要確保在同步塊或方法中調用它,并使用notify()
/notifyAll()
方法來通知等待的線程。