当前位置: 首页 > news >正文

Java中的锁

一、乐观锁和悲观锁

        1、悲观锁

        悲观锁: 认为自己在使用数据的时候一定有别的线程来修改数据,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改,synchronized和Lock的实现类都是悲观锁,适合写操作多的场景,先加锁可以保证写操作时数据正确,显示的锁定之后再操作同步资源-----狼性锁

        2、乐观锁

        乐观锁: 认为自己在使用数据的时候不会有别的线程修改数据或资源,不会添加锁,Java中使用无锁编程来实现,只是在更新的时候去判断,之前有没有别的线程更新了这个数据,如果这个数据没有被更新,当前线程将自己修改的数据成功写入,如果已经被其他线程更新,则根据不同的实现方式执行不同的操作,比如:放弃修改、重试抢锁等等。判断规则有:版本号机制Version,最常采用的是CAS算法,Java原子类中的递增操作就通过CAS自旋实现的。-----适合读操作多的场景,不加锁的特性能够使其读操作的性能大幅提升,乐观锁则直接去操作同步资源,是一种无锁算法,得之我幸不得我命---佛系锁

http://www.xdnf.cn/news/48439.html

相关文章:

  • 【C++】 —— 笔试刷题day_21
  • ARM裸机开发——I.MX6U_汇编LED灯驱动
  • 大模型技术解析与应用 | 大语言模型:从理论到实践(第2版)| 复旦大学 | 533页
  • 地级市-城镇化率(2003-2023年)-社科数据
  • 驱动开发硬核特训 · Day 15:电源管理核心知识与实战解析
  • typeScript基础(类型)
  • Scratch——第18课 列表接龙问题
  • 基于javaweb的SpringBoot儿童爱心管理系统设计与实现(源码+文档+部署讲解)
  • llamafactory的包安装
  • ArcPy Mapping 模块基础(下)
  • 动态调整映射关系的一致性哈希负载均衡算法详解
  • 计算机网络基础
  • 抽象类是“模板”,接口是“契约”——深度对比 Java 两大抽象机制
  • NLP 梳理03 — 停用词删除和规范化
  • git reset和git revert的区别
  • DQN在Gym的MountainCar环境的实现
  • SpringCloud实战
  • 软考复习——知识点软件开发
  • 提示词设计:动态提示词 标准提示词
  • 深入理解 Java 中的 synchronized 关键字
  • 【JavaWeb后端开发02】SpringBootWeb + Https协议
  • OpenCV 对图像进行阈值处理 cv2.threshold
  • 基于 pnpm + Monorepo + Turbo + 无界微前端 + Vite 的企业级前端工程实践
  • Linux教程-Shell编程系列二
  • 一招破敌,掌控 React 渲染术:createRoot 与 root.render
  • 第一章:MySQL视图基础
  • webgl入门实例-矩阵在图形学中的作用
  • Vivado中Tri_mode_ethernet_mac的时序约束、分析、调整——(五)调试注意的问题
  • Java表达式2.0
  • Java 网络编程性能优化:高吞吐量的实现方法