多线程—锁膨胀
作者:互联网
当线程0已经获取了Objec的轻量级锁,当线程1再获取时,就获取不到了,cas就会失败,此时就进入了锁膨胀过程。
(1)object对象会申请Monitor重量级锁,让Object记录重量级锁的地址。
(2)申请完之后,线程0时重量级锁(Monitor)的owner。
(3)线程1进入重量级锁(Monitor)的EntryList 阻塞(BLOCKED)。
当线程0的同步代码块执行完了之后,需要解锁时,需要按照重量级锁的解锁流程解锁了。
找到Monitor,设置Owner为null,唤醒EntryList 中的线程1,如果有多个线程在EntryList里面,那么它们将会竞争。
标签:Monitor,解锁,EntryList,获取,线程,膨胀,多线程,重量级 来源: https://blog.csdn.net/qq_42251944/article/details/120862618