锁的膨胀

2022-06-15  本文已影响0人  我是光芒万丈

锁得膨胀:
膨胀方向:无锁->偏向锁->轻量级锁->重量级锁

无锁:

没有锁或者不加锁的情况。

偏向锁:

适用于只有一个线程访问同步块 ,对象头中的markword关键字指向对应当前线程id.并修改标志位,再次进入或退出不再进行CAS操作.不消耗额外cpu资源,所以速度快。

轻量级锁:

适应线程交替执行同步块的过程。轻度冲突,当进入代码块时,发现对象头markword中的线程id不是自己,然后尝试使用CAS进行修改,由于自旋会消耗大量cpu资源,因此如果经过一段时间还没有获取到对象锁,后会升级为重量级锁。

重量级锁:

适应于多个线程同时访问一个同步块的情况,对象会进入锁池进行等待,直到资源占用着执行完,再次进行竞争

上一篇 下一篇

猜你喜欢

热点阅读