在Java中,wait()
方法用于讓當(dāng)前線程等待,直到滿足指定的條件。為了使用wait()
方法,你需要在一個(gè)對(duì)象上調(diào)用它,并且通常與synchronized
關(guān)鍵字和notify()
/notifyAll()
方法一起使用。
以下是一個(gè)簡(jiǎn)單的示例:
class SharedResource {
private boolean condition = false;
public synchronized void waitForCondition() throws InterruptedException {
while (!condition) {
wait(); // 當(dāng)前線程等待,直到條件滿足
}
// 條件滿足,繼續(xù)執(zhí)行
}
public synchronized void setCondition(boolean value) {
this.condition = value;
notify(); // 通知等待的線程條件已滿足
}
}
在這個(gè)示例中,waitForCondition()
方法會(huì)一直等待,直到condition
變量變?yōu)?code>true。當(dāng)setCondition()
方法被調(diào)用并設(shè)置condition
為true
時(shí),它會(huì)調(diào)用notify()
方法來(lái)喚醒等待的線程。
請(qǐng)注意,wait()
方法必須在synchronized
塊或方法中調(diào)用,因?yàn)樗枰@取對(duì)象的監(jiān)視器鎖。此外,調(diào)用wait()
方法時(shí),線程會(huì)釋放對(duì)象監(jiān)視器鎖,并在被喚醒后重新獲取它。
總之,Java中的wait()
方法確實(shí)可以讓線程等待,直到滿足指定的條件。但是,為了正確使用它,你需要確保在同步塊或方法中調(diào)用它,并使用notify()
/notifyAll()
方法來(lái)通知等待的線程。