悲观锁、乐观锁的区别及使用场景

悲观锁、乐观锁的区别及使用场景定义:悲观锁(Pessimistic Lock): 每次获取数据的时候,都会担心数据被修改,所以每次获取数据的时候都会进行加锁,确保在自己使用的过程中数据不会被别人修改,使用完成后进行数据解锁。由于数据进行加锁,期间对该数据进行读写的其他线程都会进行等待。乐观锁(Optimistic Lock): 每次获取数据的时候,都不会担心数据被修改,所以每次获取数据的时候都不会进行加锁,但是在更新数据的时候…

大家好,又见面了,我是你们的朋友全栈君。

定义:

悲观锁(Pessimistic Lock): 
每次获取数据的时候,都会担心数据被修改,所以每次获取数据的时候都会进行加锁,确保在自己使用的过程中数据不会被别人修改,使用完成后进行数据解锁。由于数据进行加锁,期间对该数据进行读写的其他线程都会进行等待。

乐观锁(Optimistic Lock): 

每次获取数据的时候,都不会担心数据被修改,所以每次获取数据的时候都不会进行加锁,但是在更新数据的时候需要判断该数据是否被别人修改过。如果数据被其他线程修改,则不进行数据更新,如果数据没有被其他线程修改,则进行数据更新。由于数据没有进行加锁,期间该数据可以被其他线程进行读写操作。

使用场景:

悲观锁:比较适合写入操作比较频繁的场景,如果出现大量的读取操作,每次读取的时候都会进行加锁,这样会增加大量的锁的开销,降低了系统的吞吐量。

乐观锁:比较适合读取操作比较频繁的场景,如果出现大量的写入操作,数据发生冲突的可能性就会增大,为了保证数据的一致性,应用层需要不断的重新获取数据,这样会增加大量的查询操作,降低了系统的吞吐量。

总结:两种所各有优缺点,读取频繁使用乐观锁,写入频繁使用悲观锁。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/147273.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 创新与项目管理_创新与创业管理

    创新与项目管理_创新与创业管理值此新商业时代,作为组织内保证所有项目成功交付,支撑组织战略目标实现的PMO,在现代企业管理和商业运作中将扮演着十分重要的角色。现阶段,虽然PMO随着项目管理的普及和深入应用,已经成为组织项目管理发展的新趋势,但是它在迎来新的发展机遇的同时也面临着不小的挑战,其PMO管理能力与水平的高低将决定它自身在支撑组织战略中的价值程度。为进一步加强PMO人士之间的广泛交流,分享成功的PMO运作实践,促进…

    2022年8月31日
  • 深度学习之GAN对抗神经网络

    深度学习之GAN对抗神经网络1、结构图2、知识点3、代码及案例#coding:utf-8###对抗生成网络案例#####<imgsrc="jpg/3.png"alt=&qu

    2022年8月4日
  • SAE J1939 – 简短介绍[通俗易懂]

    SAE J1939 – 简短介绍[通俗易懂]SAEJ1939–简短介绍在商用车辆领域,标准化的,串行的协议用于单个电子控制单元(ECU)和传动系统组件之间的通讯已有一段时间。通过使用标准化的串行协议,可具有以下优势:组件制造商只需要采用一个协议;这主要是商用车辆才会涉及的问题,因为生产量低。商用车辆制造商可依靠不同供应商的组件。可确保组件之间的互操作性,来自不同制造商的组件不用调整就可一同工作。由国际汽车工程师协会…

    2022年5月1日
  • SpringBoot集成Spring Security(1)——入门程序

    SpringBoot集成Spring Security(1)——入门程序因为项目需要,第一次接触SpringSecurity,早就听闻SpringSecurity强大但上手困难,今天学习了一天,翻遍了全网资料,才仅仅出入门道,特整理这篇文章来让后来者少踩一点坑(本文附带实例程序,请放心食用)预警:如果你仅仅是学习一个安全框架,不推荐使用SpringSecurity!!!!推荐学习ApacheShiro,配置简单易上手,该有功能它都有,可以…

    2022年7月18日
  • DB2数据库SQL语法参考手册

    DB2数据库SQL语法参考手册

    2021年5月6日
  • MySQL增删改查常用语句命令「建议收藏」

    MySQL增删改查常用语句命令「建议收藏」 2017/11/01 |  未分类 |songjian|  1条评论 |  1818viewsMySQL关系型数据库RDS中的老大哥,增删改查是MySQL入门的基础,数据库吧来说说MySQL数据库增删改查常用语句。增删改查语句增删改查的语句命令为增:insert删:delete改:update查:SELECT或者show库操作创建数据库:createdatabaseshujukuba;…

    2022年10月25日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号