吃水不忘挑水人
wait() 阻塞线程 释放锁标记
notify()/notifyAll() 释放线程,不会释放锁标记
Object wait()
t1: o.wait() 必须放在对o加锁的同步代码块中。
(t1对o调用wait()方法)会有两种结果
1.t1会释放其拥有的所有锁标记
2.同时t1会阻塞在o的等待队列中
t2: o.notify()/notifyAll() 必须放在对o加锁的同步代码块中,从o的等待队列中释放一个/全部线程(t2.对o调用notify()或者是notifyAll()方法)
线程对对象调用wait() 方法进入该对象的等待队列中,靠别的线程对该对象调用notify()或者是notifyAll()方法进行从该对象的等待队列中进行释放该线程