wait()
方法是 Java 中的一個同步機制,主要用于線程間的通信。它通常與 synchronized
關鍵字和 notify()
或 notifyAll()
方法一起使用。
synchronized
關鍵字:在使用 wait()
方法之前,你需要將當前線程所訪問的對象聲明為 synchronized
。這樣可以確保在同一時刻,只有一個線程能夠進入該對象的同步代碼塊。synchronized (object) {
// 同步代碼塊
}
notify()
或 notifyAll()
方法:這兩個方法用于喚醒在同一個對象上等待的線程。notify()
只喚醒一個等待的線程,而 notifyAll()
會喚醒所有等待的線程。通常,我們在一個線程中調用 notify()
或 notifyAll()
,而在另一個線程中調用 wait()
。synchronized (object) {
// 等待條件
object.wait(); // 當前線程等待
// 喚醒其他等待的線程
object.notify(); // 只喚醒一個線程
// 或者
object.notifyAll(); // 喚醒所有線程
}
需要注意的是,調用 wait()
方法時,當前線程必須擁有該對象的監視器(即鎖)。否則,線程會拋出 IllegalMonitorStateException
。