Java锁

乐观锁

  • 什么是乐观锁

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

    • 大多是基于数据版本(version)记录机制实现。所谓数据版本,即为数据增加一个版本标识,在基于数据库表的版本解决方案中,一般是通过为数据库表增加一个"version"字段来实现。读取出数据时,将此版本号一同读出,之后更新时,将提交数据的版本数据与数据库表对应记录的当前版本信息进行比对,和读取时相同则更新,否则不进行更新
相关推荐
异常君9 分钟前
Java 应用中构建 Elasticsearch 多层次缓存:提升查询效率的实战方案
java·elasticsearch·架构
橘子编程24 分钟前
Maven从入门到精通指南
java·maven
wodownload225 分钟前
CS003-2-2-perfermance
java·开发语言·jvm
想用offer打牌29 分钟前
面试官拷打我线程池,我这样回答😗
java·后端·面试
真的很上进35 分钟前
2025最全TS手写题之partial/Omit/Pick/Exclude/Readonly/Required
java·前端·vue.js·python·算法·react·html5
重庆小透明40 分钟前
【从零学习JVM|第三篇】类的生命周期(高频面试题)
java·jvm·后端·学习
BAStriver1 小时前
PKIX path building failed问题小结
java·maven
welsonx1 小时前
Android性能优化-Frida工具篇
java
圈圈编码1 小时前
LeetCode Hot100刷题——合并两个有序链表
java·数据结构·算法·leetcode·链表
小前端大牛马1 小时前
java教程笔记(十四)-线程池
java·笔记·python