悲观锁:

悲观锁总是假设最坏的情况,每次拿数据都认为别人会修改数据,所以要加锁,别人只能等待,直到我释放锁才能拿到锁;数据库的行锁,表锁,写锁都是这种方式,java中的synchtorized和ReentrantLock也是悲观锁的思想

乐观锁:

总是假设最好的情况,每次拿数据都认为别人不会修改数据,所以不会加锁,但是更新的时候,会判断在此期间有没有人修改过,一般基于版本号机制实现

乐观锁适用于读多写少的情况, 即冲突很少发生,如果是多写的情况,应用会不断重试,反而会降低系统性能,这种情况最好用悲观锁,因为等待锁被释放后,可以立即获得锁进行操作

java基础---悲观锁和乐观锁相关推荐

  1. 探索JAVA并发 - 悲观锁和乐观锁

    作者:acupt,专注Java,架构师社区合伙人! 什么是悲观锁,什么是乐观锁,它们是如何实现的? 定义 悲观锁:对世界充满不信任,认为一定会发生冲突,因此在使用资源前先将其锁住,具有强烈的独占和排他 ...

  2. 详解各种锁:CAS、共享锁、排它锁、互斥锁、悲观锁、乐观锁、行级锁、表级锁、页级锁、死锁、JAVA对CAS的支持、ABA问题、AQS原理

    共享锁(S锁) 又称为读锁,可以查看但无法修改和删除的一种数据锁.如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排它锁.获准共享锁的事务只能读数据,不能修改数据. 共享锁下其它用 ...

  3. Java死锁、活锁,悲观锁、乐观锁

    1.死锁与活锁的区别,死锁与饥饿的区别? 死锁:是指两个或两个以上的进程(或线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去. 产生死锁的必要条件: 互斥条 ...

  4. **Java有哪些悲观锁的实现_「Java并发编程」何谓悲观锁与乐观锁,Java编程你会吗...

    何谓悲观锁与乐观锁 悲观锁 乐观锁 两种锁的使用场景 乐观锁常见的两种实现方式 1. 版本号机制 2. CAS算法 乐观锁的缺点 1 ABA 问题 2 循环时间长开销大 3 只能保证一个共享变量的原子 ...

  5. Java多线程学习十二:悲观锁和乐观锁的本质||

    悲观锁和乐观锁是从是否锁住资源的角度进行分类的. 悲观锁 悲观锁比较悲观,它认为如果不锁住这个资源,别的线程就会来争抢,就会造成数据结果错误,所以悲观锁为了确保结果的正确性,会在每次获取并修改数据时, ...

  6. Java多线程学习总结(6)——深入理解悲观锁与乐观锁

    分享一个大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!点击浏览教程 一.锁(Lock)的概念 锁,在我们生活中随处可见,我们的门上有锁,我们存钱的保险柜 ...

  7. JAVA并发编程:悲观锁与乐观锁

    生活 晴. 悲观与乐观的情绪概念 本篇来了解一下悲观锁和乐观锁,在了解这两个锁之前,我们首先有必要把悲观和乐观这两个词搞清楚: 悲观:对世事怀有消极的看法,认为事物总往糟糕的方向发展. 乐观:对世事怀 ...

  8. java里面的悲观锁和乐观锁

    最近面试,面试官提到了悲观锁和乐观锁,感觉回答的不是很好,特此总结记录. 简单来说,悲观锁就是凡事都认为会出现最坏的情形,而乐观锁就是认为凡事都以最好的情形发展,对应一个消极,一个积极. 悲观锁 具有 ...

  9. Java悲观锁与乐观锁

    Java悲观锁与乐观锁 锁的目的 实例 悲观锁实现 乐观锁实现 总结 锁的目的 多线程编程如有共用资源的使用时,需要保证数据安全,资源需要同步处理.处理资源的手段可以有:互斥同步与非阻塞同步.实现分别 ...

  10. 聊一聊Java中的悲观锁和乐观锁

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网站. 文章目录 悲观锁(Pessimistic Locking) 悲观锁存的问题: 乐观锁 乐观锁存在的问 ...

最新文章

  1. 阿里某员工发飙:给我一点陪家人的时间行吗?真的想走了!
  2. springboot 2.3_Spring Boot 2.X系列教程:七天从无到有掌握Spring Boot-持续更新
  3. PCB线宽与电流的关系
  4. 自动为DEV GridView控件添加SizeChanged事件
  5. 网络编程基础--协程--greenlet切换---gevent自动识别 IO ---
  6. Oracle常用函数——COALESCE
  7. JPA和 QueryDSL入门
  8. 关于win10不能修改ip问题
  9. 帮忙framebuffer扫盲
  10. 【C语言练习——打印空心下三角及其变形】
  11. OpenGL光栅化作业:【bresenham算法】GL_POINTS为基础画圆
  12. 程序员必须 知道的英语单词
  13. linux中ess33没有IP地址问题
  14. 锤子官网html格式,锤子便签
  15. 意语口语学习:意大利语的发音
  16. 万能码,你的启明星(安全扫码专业委员会)
  17. 打卡系列-剑指 Offer 62. 圆圈中最后剩下的数字
  18. oracle 的 rank()函数
  19. 从Nginx到Pandownload,程序员如何避免面向监狱编程
  20. NVIDIA,显卡驱动,CUDA版本之间兼容关系及安装

热门文章

  1. 【电气安全】关于医疗专用隔离电源系统在医院配电系统中的应用
  2. antd表格分页控件显示英文page
  3. 【neutron源码分析】neutron-server启动流程分析
  4. javascript中使用split对多个分割符进行分割
  5. RESTful风格的springMVC
  6. 【线性代数】通俗的理解奇异值以及与特征值的区别,还有奇异值分解及其应用
  7. Redis:redis通用命令;redis常见数据结构;redis客户端;redis的序列化
  8. Win10下不能识别Android的MTP模式
  9. java StringBuilder追加换行符
  10. class的操作:className和classList