Synchronized
- Object.wait():释放当前对象锁,并进入阻塞队列(wait set)
- Object.notify():唤醒当前对象阻塞队列(wait set)里的任一线程(并不保证唤醒哪一个)
- Object.notifyAll():唤醒当前对象阻塞队列(wait set)里的所有线程, 进到entry set 去竞争锁
为什么wait,notify和notifyAll要与synchronized一起使用?
Wait 只有通过synchronized拿到锁,才能进入wait set
notify notifyAll只有通过synchronized拿到锁,才能去唤醒 wait set 里线程 到entry set
object monitor
对象在内存中的存储
Markword 32位jvm 结构如下: 重量级锁即为 Synchronized 的锁