java wait條件滿足嗎

小樊
81
2024-11-17 00:51:55

在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è)置conditiontrue時(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)通知等待的線程。

0