1.当两个线程主动地读取一个共享变量时,在花费读取时间的基础上,读取到的值是不是想要的,并不能完全确定,“等待/通知”机制就用来满足这样的需求。
2.wait()的作用是使当前执行的线程进行等待。调用之前要获取对象级别锁,即只能在同步方法中或者同步块中调用。执行wait()方法后,当前线程释放锁,在从wait()返回前,线程与其他线程竞争重新获得锁。
3.notify()也要在同步方法或者同步块中调用,也是对象级别锁。该方法用来通知等待锁的其他线程,如果有多个线程,则由线程规划器随机挑选出一个呈wait状态的线程,对其发出通知notify,并使它等待获取该对象的对象锁。在执行notify()方法后,当前线程不会马上释放该对象锁,呈wait状态的线程也不能马上获取对象锁,要等到notify()方法的线程将程序执行完成当前线程才会释放锁。在wait状态的线程,这个对象没有发出notify()或者notifyAll()会一直阻塞。