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
。