当前线程在继续执行前需要等待一个条件,仅有synchronized关键字是不够的。虽然synchronized阻止并发访问一个对象,但是它没有实现线程中的通信。为此Object提供了notify(),notifyAll(),wait()方法;当线程即将结束synchronized()方法时,则调用notify()或者notifyAll()方法使处于等待的线程处于就绪状态,以便使这些线程参与临界区的竞争。
notify()方法和notifyAll()方法的区别是:notifyAll()方法唤醒由于使用这个同步方法而处与等待状态的线程结束等待,曾中断的线程就会从刚才中断处继续执行这个同步方法,并且遵循先中断先继续的原则;notify()方法只是通知处于等待中的某一个线程结束等待