- wait()/notify()是Object的本地final方法,无法被重写。
- wait()/notify()的前提是必须先获得锁。它们在同步代码块中执行。
- wait()的时候,当前线程释放锁,处于阻塞状态;notify()的时候,不会立即释放锁,而是唤醒一个阻塞于当前锁的线程,然后继续往下执行,直到走出同步代码块或者调用了wait(),才会释放锁。
notifyAll会唤醒所有线程,哪个线程会执行由操作系统决定。
- wait()需要被try catch包围。
- 多个线程等待某个条件变化时,使用while (条件不满足) {wait()},以使得该线程被意外唤醒时继续阻塞,其它被唤醒的线程接着执行。