Java锁

乐观锁

  • 什么是乐观锁

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

    • 大多是基于数据版本(version)记录机制实现。所谓数据版本,即为数据增加一个版本标识,在基于数据库表的版本解决方案中,一般是通过为数据库表增加一个"version"字段来实现。读取出数据时,将此版本号一同读出,之后更新时,将提交数据的版本数据与数据库表对应记录的当前版本信息进行比对,和读取时相同则更新,否则不进行更新
相关推荐
Star在努力2 分钟前
20-C语言:第21~22天笔记
java·c语言·笔记
用户849137175471633 分钟前
JDK 17 实战系列(第2期):核心语言特性深度解析
java·后端
自由的疯36 分钟前
Java 8 新特性之 Lambda 表达式
java·后端·架构
自由的疯37 分钟前
Java 17 新特性之 Text Blocks(文本块)
java·后端·架构
用户849137175471638 分钟前
JustAuth实战系列(第2期):架构设计精髓 - 分层架构与设计原则
java·后端·架构
BUG?不,是彩蛋!1 小时前
从零开始用 Eclipse 写第一个 Java 程序:HelloWorld 全流程 + 避坑指南
java·eclipse·idea
Lemon程序馆1 小时前
Arthas | Java 线上问题快速定位神器
java·运维·后端
yu2024111 小时前
异世界历险之数据结构世界(非递归快排,归并排序(递归,非递归))
java·数据结构·排序算法
MacroZheng1 小时前
手动部署jar包,太low!Spring Boot官方热部署神器真香!
java·spring boot·后端
努力努力再努力wz2 小时前
【Linux内核系列】:信号(上)
java·linux·运维·服务器·c语言·开发语言·c++