第九课:轻谈Java锁

第九课:轻谈Java锁,第1张

第九课:轻谈Java锁 1.什么是锁的机制

        Java卡法在并发环境下,多个线程会对同一个资源进行争抢,可能会导致数据不一致的问题。为了解决这一问题,需要通过一种抽象的锁来对资源进行锁定。

2.Java锁的类型:

        

 3.宏观上的锁  1.乐观锁

        乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,采取在写时先读出当前版本号,然后加锁 *** 作(比较跟上一次的版本号,如果一样则更新),如果失败则要重复读-比较-写的 *** 作。

        java中的乐观锁基本都是通过CAS *** 作实现的,CAS是一种更新的原子 *** 作,比较当前值跟传入值是否一样,一样则更新,否则失败。

1.悲观锁

        悲观锁是就是悲观思想,即认为写多,遇到并发写的可能性高,每次去拿数据的时候都认为别人会修改,所以每次在读写数据的时候都会上锁,这样别人想读写这个数据就会block直到拿到锁。java中的悲观锁就是Synchronized,AQS框架下的锁则是先尝试cas乐观锁去获取锁,获取不到,才会转换为悲观锁,如RetreenLock。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5661353.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存