1、**wait**
方法的语义有两个,一个是释放当前对象的锁,另一个是使得当前线程进入阻塞队列,而这些操作都和监视器是相关的,所以w
ait必须要获得一个监视器锁。
2、而**notify**
来说也 是一样的,它是唤醒一个线程,既然要去唤醒,首先得知道它在哪里?所以就必须要找到这个对象获取到这个对象的锁,然后到这个对象的等待队列中去唤醒一个线程。
史上最全的并发编程脑图:https://www.processon.com/view/5b1f1ad7e4b03f9d251c06e5#map