Java锁

乐观锁

  • 什么是乐观锁

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

    • 大多是基于数据版本(version)记录机制实现。所谓数据版本,即为数据增加一个版本标识,在基于数据库表的版本解决方案中,一般是通过为数据库表增加一个"version"字段来实现。读取出数据时,将此版本号一同读出,之后更新时,将提交数据的版本数据与数据库表对应记录的当前版本信息进行比对,和读取时相同则更新,否则不进行更新
相关推荐
黎雁·泠崖14 分钟前
【魔法森林冒险】2/14 抽象层设计:Figure/Person类(所有角色的基石)
java·开发语言
怒放吧德德1 小时前
后端 Mock 实战:Spring Boot 3 实现入站 & 出站接口模拟
java·后端·设计
biyezuopinvip1 小时前
基于Spring Boot的企业网盘的设计与实现(任务书)
java·spring boot·后端·vue·ssm·任务书·企业网盘的设计与实现
脸大是真的好~1 小时前
EasyExcel的使用
java·excel
小宋10211 小时前
Java 项目结构 vs Python 项目结构:如何快速搭一个可跑项目
java·开发语言·python
JavaGuide1 小时前
一款悄然崛起的国产规则引擎,让业务编排效率提升 10 倍!
java·spring boot
吃虫子的人2 小时前
记录使用Arthas修改线上源码重新加载的一次过程
java·arthas
figo10tf2 小时前
Spring Boot项目集成Redisson 原始依赖与 Spring Boot Starter 的流程
java·spring boot·后端
zhangyi_viva2 小时前
Spring Boot(七):Swagger 接口文档
java·spring boot·后端