多线程:乐观和悲观锁

前言:
理解:
  1. 悲观锁:在我使用的时候,你们可能会碰,所以我会锁起来,不让你们接触。
  2. 乐观锁: 在我使用的时候,你们很可能不会使用,我懒的加锁,等我最后使用完看看你们碰没碰在处理。
  3. 乐观锁的实现:版本号比较,和CAS(需要双重判断)
  4. 互斥锁可以理解为悲观锁,比如synchronize,和ReentrantLock
  5. 悲观锁通常多用于写比较多的情况(多写场景,竞争激烈),这样可以避免频繁失败和重试影响性能,悲观锁的开销是固定的。
  6. 不过,如果乐观锁解决了频繁失败和重试这个问题的话(比如LongAdder使用空间换时间),也是可以考虑使用乐观锁的,要视实际情况而定。
  7. 乐观锁通常多用于写比较少的情况(多读场景,竞争较少),这样可以避免频繁加锁影响性能。不过,乐观锁主要针对的对象是单个共享变量(参考java.util.concurrent.atomic包下面的原子变量类)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贝多芬也爱敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值