notify()
唤醒一个等待在this object的monitor的线程。多个线程的话,其中有一个会被唤醒。
这个选择是任意的,可以自由实现。一个线程通过调用wait 方法之一在这个object的monitor上等待。
被唤醒的线程一直等到当前线程放弃此object的monitor才能继续。被唤醒的线程将和其他可能的线程
竞争同步此object的机会。例如,被唤醒的线程在成为下一个锁住此对象上不享受权利或劣势。
这个方法只应该被拥有object的monitor的线程调用,一个线程可以通过下面三种方式成为此对象的monitor的拥有者。
- 通过调用这个对象的同步实例方法
- 执行synchronous(some) {}中的代码体
- 对于Class类型的对象,通过执行这个class的静态方法。
同一时刻只能有一个线程拥有这个对象的monitor
wait()
使当前线程等待直到另外一个线程调用了这个对象的Object#nofity()方法或者Object的notifyAll()方法。
当前线程必须拥有此对象的monitor。这个线程释放拥有权并且一直wait到另一个线程调用nitify或者notifyAll方法。这个
线程然后就可以等待到重新获得monitor并且继续执行