java进阶知识--JAVA锁

一、JAVA锁

 1. 乐观锁:线程安全,性能较好。

  乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,采取在写时先读出当前版本号,然后跟上一次的版本号比较,如果一样则更新,如果不一样则要重复读-比较-写的操作。
  java 中的乐观锁基本都是通过 CAS(CompareAndSet)算法操作实现的,CAS 算法是一种更新的原子操作,它的机制是不加锁,用版本号比较,比较当前值跟传入值是否一样,一样则更新,否则失败。

      

 2. 悲观锁:线程安全,性能较差。

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

posted @   九点的太阳  阅读(118)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示