Java锁

乐观锁

  • 什么是乐观锁

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

    • 大多是基于数据版本(version)记录机制实现。所谓数据版本,即为数据增加一个版本标识,在基于数据库表的版本解决方案中,一般是通过为数据库表增加一个"version"字段来实现。读取出数据时,将此版本号一同读出,之后更新时,将提交数据的版本数据与数据库表对应记录的当前版本信息进行比对,和读取时相同则更新,否则不进行更新
相关推荐
我真会写代码几秒前
Redis核心特性详解:事务、发布订阅与数据删除淘汰策略
java·数据库·redis
IT 行者26 分钟前
LangChain4j 集成 Redis 向量存储:我踩过的坑和选型建议
java·人工智能·redis·后端
一定要AK29 分钟前
Java流程控制
java·开发语言·笔记
tryCbest1 小时前
Java和Python开发项目部署简介
java·开发语言·python
huabiangaozhi1 小时前
postgresql链接详解
java
大阿明1 小时前
PostgreSQL常用时间函数与时间计算提取示例说明
java
小糯米6011 小时前
C++ 并查集
java·c++·算法
IAUTOMOBILE1 小时前
Code Marathon 项目源码解析与技术实践
java·前端·算法
Flying pigs~~1 小时前
基于Deepseek大模型API完成文本分类预测功能
java·前端·人工智能·python·langchain·deepseek
Lyyaoo.1 小时前
【JAVA基础面经】深拷贝与浅拷贝
java·开发语言·算法