java wait超時(shí)怎么設(shè)置

小樊
81
2024-11-17 00:50:56

在Java中,wait()方法可以與synchronized關(guān)鍵字和Object.notify()Object.notifyAll()方法一起使用,以實(shí)現(xiàn)線程間的通信。當(dāng)調(diào)用wait()方法時(shí),線程會(huì)釋放其占有的對(duì)象鎖并進(jìn)入等待狀態(tài),直到其他線程調(diào)用同一對(duì)象的notify()notifyAll()方法喚醒它。

要設(shè)置wait()方法的超時(shí)時(shí)間,可以使用Thread.sleep()方法。以下是一個(gè)示例:

try {
    // 1. 獲取對(duì)象鎖
    synchronized (lock) {
        // 2. 檢查條件是否滿足
        while (!condition) {
            // 3. 如果條件不滿足,則等待一段時(shí)間(單位:毫秒)
            lock.wait(timeout);
        }
        // 4. 條件滿足,執(zhí)行后續(xù)操作
    }
} catch (InterruptedException e) {
    // 處理異常
}

在這個(gè)示例中,lock是用于同步的對(duì)象,condition是等待的條件,timeout是等待的超時(shí)時(shí)間(以毫秒為單位)。如果在timeout毫秒內(nèi)條件沒(méi)有滿足,線程將繼續(xù)執(zhí)行后續(xù)操作。注意,當(dāng)線程被喚醒后,還需要重新獲取對(duì)象鎖才能繼續(xù)執(zhí)行。

0