在Java中,wait()和sleep()方法都可以用于線程的控制和同步。
wait()方法是Object類的方法,它會使當前線程進入等待狀態,直到其他線程調用該對象的notify()或notifyAll()方法喚醒它。wait()方法需要在synchronized塊或方法中使用,因為它要求線程釋放對象的鎖。
示例代碼:
synchronized (obj) {
while (condition) {
try {
obj.wait(); // 當前線程進入等待狀態
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// 執行其他邏輯
obj.notify(); // 喚醒等待的線程
}
sleep()方法是Thread類的靜態方法,它會使當前線程進入休眠狀態,暫停執行一段時間(以毫秒為單位),然后重新開始執行。sleep()方法不會釋放對象的鎖,所以可以在任何地方使用。
示例代碼:
try {
Thread.sleep(1000); // 當前線程休眠1秒
} catch (InterruptedException e) {
e.printStackTrace();
}
需要注意的是,wait()和sleep()方法都會拋出InterruptedException異常,所以需要在調用它們的地方進行異常處理。