wait(): 使当前线程等待,直到另一个线程为此对象调用notify()方法或notifyAll()方法。
notify(): 唤醒正在此对象监视器上等待的单个线程。
notifyAll(): 唤醒等待此对象监视器的所有线程。
根据上述两点,在调用wait(), notify()或notifyAll()的时候,必须先获得锁,且状态变量须由该锁保护,而固有锁对象与固有条件队列对象又是同一个对象。也就是说,要在某个对象上执行wait,notify,先必须锁定该对象,而对应的状态变量也是由该对象锁保护的。