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
。