Java并发包中的锁升级

在Java中,特别是ReentrantLocksynchronized关键字的实现中,锁的升级通常涉及到从无锁状态到偏向锁、再升级到轻量级锁,最后可能升级到重量级锁的过程。这一系列过程是为了减少锁带来的开销,提高并发效率。

  1. 偏向锁(Biased Locking):大多数情况下,锁会偏向于第一个获得它的线程,之后此线程再次请求锁时,无需进行同步操作,直接访问。这是一种优化措施,假定锁将由同一线程多次获取。

  2. 轻量级锁(Lightweight Locking):当有第二个线程尝试获取已被偏向的锁时,偏向锁会升级为轻量级锁。轻量级锁通过CAS操作(Compare and Swap)试图将锁标志位设置为“锁定状态”,避免重量级锁带来的操作系统层面的开销。

  3. 重量级锁(Heavyweight Locking):如果轻量级锁下的多个线程争用同一个锁导致CAS失败(即自旋操作达到一定次数后),锁会进一步升级为重量级锁,这时会涉及到操作系统层面的互斥锁(mutex),线程会被阻塞和唤醒,开销较大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值