wait和notify 为什么需要在synchronized里面?

在这里插入图片描述

1、**wait**方法的语义有两个,一个是释放当前对象的锁,另一个是使得当前线程进入阻塞队列,而这些操作都和监视器是相关的,所以w
ait必须要获得一个监视器锁。

2、而**notify**来说也 是一样的,它是唤醒一个线程,既然要去唤醒,首先得知道它在哪里?所以就必须要找到这个对象获取到这个对象的锁,然后到这个对象的等待队列中去唤醒一个线程。

史上最全的并发编程脑图:https://www.processon.com/view/5b1f1ad7e4b03f9d251c06e5#map

猜你喜欢

转载自blog.csdn.net/fd2025/article/details/108359898