Java锁

乐观锁

  • 什么是乐观锁

    • 每次去拿数据的时候都认为别人不会修改,更新的时候会判断别人是否更新过数据,通过版本来判断,如果数据被修改了就拒绝更新
    • Java里面大量使用CAS,CAS就是属于乐观锁,性能较悲观锁有很大的提高。AtomicXXX等原子类底层就是CAS实现,一定程度比synchronized好,因为后者是悲观锁
    • 悲观锁适合写操作多的场景,乐观锁适合读操作多的场景,乐观锁的吞吐量会比悲观锁多
  • 数据库的乐观锁

    • 大多是基于数据版本(version)记录机制实现。所谓数据版本,即为数据增加一个版本标识,在基于数据库表的版本解决方案中,一般是通过为数据库表增加一个"version"字段来实现。读取出数据时,将此版本号一同读出,之后更新时,将提交数据的版本数据与数据库表对应记录的当前版本信息进行比对,和读取时相同则更新,否则不进行更新
相关推荐
名字还没想好☜6 分钟前
Java Cleaner 实战:替代废弃的 finalize() 做堆外资源清理,以及强引用导致永不回收的坑
java·后端·spring
LaughingZhu8 分钟前
Product Hunt 每日热榜 | 2026-09-02
java·ide·intellij-idea
旧梦952713 分钟前
Java EnumMap 详解:原理、用法与实战
java·开发语言
兜里ヌ有糖19 分钟前
java Date时间格式工具类DateUtil
java
zww894911136 分钟前
家政多商户系统开发:从架构设计到落地实践
java·eclipse
snow@li1 小时前
Java:微服务项目与单体项目区别、市场占有率全景深度分析
java·开发语言·微服务
还是大剑师兰特1 小时前
Maven‑3.9.16 Windows 下载+安装+环境变量完整教程
java·windows·maven
吴声子夜歌1 小时前
Java——性能和效率
java·开发语言
meilindehuzi_a1 小时前
LangChain.js 对话 Memory 实战:History 持久化、截断与摘要压缩
java·javascript·langchain
zhougl9962 小时前
主流漏洞扫描工具
java