溫馨提示×

java線程wait和sleep怎么使用

小億
86
2023-12-16 09:33:22
欄目: 編程語言

在Java中,wait()和sleep()方法都可以用于線程的控制和同步。

wait()方法是Object類的方法,它會使當(dāng)前線程進(jìn)入等待狀態(tài),直到其他線程調(diào)用該對象的notify()或notifyAll()方法喚醒它。wait()方法需要在synchronized塊或方法中使用,因為它要求線程釋放對象的鎖。

示例代碼:

synchronized (obj) {
    while (condition) {
        try {
            obj.wait(); // 當(dāng)前線程進(jìn)入等待狀態(tài)
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    // 執(zhí)行其他邏輯
    obj.notify(); // 喚醒等待的線程
}

sleep()方法是Thread類的靜態(tài)方法,它會使當(dāng)前線程進(jìn)入休眠狀態(tài),暫停執(zhí)行一段時間(以毫秒為單位),然后重新開始執(zhí)行。sleep()方法不會釋放對象的鎖,所以可以在任何地方使用。

示例代碼:

try {
    Thread.sleep(1000); // 當(dāng)前線程休眠1秒
} catch (InterruptedException e) {
    e.printStackTrace();
}

需要注意的是,wait()和sleep()方法都會拋出InterruptedException異常,所以需要在調(diào)用它們的地方進(jìn)行異常處理。

0