wait() & notify() & notifyAll()

#多线程

wait()

让不满足运行条件的线程进入等待状态wait()方法必须在当前获取的锁对象上调用 。当一个线程处于等待时,就会释放锁对象,让其他线程能够调用。

循环调用wait()是一项编程范式:

while(条件不满足) {
  wait();
}

notify()

通知等待状态的线程继续运行。

notifyAll()

唤醒所有处于等待状态的线程,但这些线程中也只有一个线程可以获取锁并继续运行。 一般情况下都会选择使用 notifyAll()而不是notify(),因为notify()可能会导致有些低优先级的线程永远没有运行的机会。

synchronized配套使用

因为需要操作锁对象,上述方法必须在synchronized块中使用。