wait()
- 属于Object类中的方法, 当线程调用一个共享变量的 wait 方法时, 当前线程会阻塞挂起, 直到发生如下情况返回
- 其他线程调用了这个共享对象的 notify 方法或 notifyAll 方法
- 其他线程调用了该线程的 interrupt 方法, 该线程抛出 InterruptedException 异常返
- 当前线程调用了共享变量的 wait 方法, 只会释放该共享变量的锁, 如果当前线程还持有其他共享变量的锁, 这些锁不会释放
notify()
一个线程调用共享变量的 notify 函数, 会唤醒一个在该变量上调用 wait 系列方法后被挂起的线程, 一个共享变量上可能有多个线程在等待, 具体唤醒哪个等待的线程是随机的
notifyAll()
线程调用共享变量的 notifyAll 函数, 会唤醒所有在这个共享变量上调用 wait 系列的方法后被挂起的线程