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。