12张图带你彻底理解Java中的各种锁

本篇涉猎:悲观锁与乐观锁悲观锁何为悲观?永远处于一个消极悲观状态,因此悲观锁觉得并发操作每次都可能有问题,于是每次都会加锁。稍微详细解释:悲观锁认为对于同一个数据的并发操作,一定会发生修改的,哪怕没有修改,也会认为修改。因此对于同一份数据的并发操作,悲观锁采取加锁的形式。悲观地认为,不加锁并发操作一定会出问题。如图所示,假设现在有多个线程想操作同一个资源对象,可能有人就会想到使用互斥锁进行同步,而它的同步方式就是悲观的。认为如果不严格同步线程调用,便会出问题。因此,互斥锁会...
摘要由CSDN通过智能技术生成

本篇涉猎:

 

悲观锁与乐观锁

悲观锁

何为悲观?永远处于一个消极悲观状态,因此悲观锁觉得并发操作每次都可能有问题,于是每次都会加锁。

稍微详细解释:

悲观锁认为对于同一个数据的并发操作,一定会发生修改的,哪怕没有修改,也会认为修改。因此对于同一份数据的并发操作,悲观锁采取加锁的形式。悲观地认为,不加锁并发操作一定会出问题。

如图所示,假设现在有多个线程想操作同一个资源对象,可能有人就会想到使用互斥锁进行同步,而它的同步方式就是悲观的。认为如果不严格同步线程调用,便会出问题。因此,互斥锁会将资源锁定,只供一个线程使用。

乐观锁

何为乐观?永远处于乐观积极状态,因此乐观锁觉得并发操作期间是不会出问题的,操作数据不加锁,只会在最后更新数据时检查数据有没有被修改,没有的话才更新。

通常乐观锁可以用CAS算法或则vision版本机制实现。在Java中,java.util.concurrent.atomic包下的原子类就是使用CAS实现的。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值