偏向锁的几种状态

偏向锁是一种优化策略,旨在减少轻量级锁的CAS操作。当只有一个线程访问对象时,它会将对象头的Mark Word设置为线程ID,后续此线程重入时不需CAS。在调用对象的hashCode()方法或出现锁竞争时,偏向锁会被撤销,可能升级为轻量级锁。对象创建后,默认开启偏向锁,但可通过虚拟机参数禁用延迟。撤销偏向锁可能通过其他线程使用对象或特定线程同步操作触发。
摘要由CSDN通过智能技术生成

偏向锁不会主动释放锁

1.定义

在轻量级的锁中,我们可以发现,如果同一个线程对同一个对象进行重入锁时,也需要执行CAS操作,这是有点耗时滴,那么java6开始引入了偏向锁的东东,只有第一次使用CAS时将对象的Mark Word头设置为入锁线程ID,之后这个入锁线程再进行重入锁时,发现线程ID是自己的,那么就不用再进行CAS了

2. 偏向状态

 

2.1一个对象的创建过程

  1. 如果开启了偏向锁(默认是开启的),那么对象刚创建之后,Mark Word 最后三位的值101,并且这是它的Thread,epoch,age都是0,在加锁的时候进行设置这些的值.

  2. 偏向锁默认是延迟的,不会在程序启动的时候立刻生效,如果想避免延迟,可以添加虚拟机参数来禁用延迟:-XX:BiasedLocking

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值