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

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

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

定义:

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

乐观锁(Optimistic Lock): 

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

使用场景:

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

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

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

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

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

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


相关推荐

  • Pytest(15)pytest分布式执行用例「建议收藏」

    Pytest(15)pytest分布式执行用例「建议收藏」前言平常我们功能测试用例非常多时,比如有1千条用例,假设每个用例执行需要1分钟,如果单个测试人员执行需要1000分钟才能跑完当项目非常紧急时,会需要协调多个测试资源来把任务分成两部分,于是执行时间

    2022年7月28日
    19
  • 理解的英文_Spring ioc

    理解的英文_Spring ioc前言:这是在慕课网上学习SpringBoot2.0深度实践之核心技术篇时所做的笔记,主要供本人复习之用。目录第一章概要1.1基本使用1.1.1直接运行1.1.2自定义1.2用到的基础技术1.3用到的扩展衍生技术第二章SpringApplication的准备阶段2.1配置SpringBean的来源2.2推断Web应用类型2.3推断引…

    2022年9月10日
    3
  • html怎么让背景图片自适应屏幕大小_css背景图片拉伸填充

    html怎么让背景图片自适应屏幕大小_css背景图片拉伸填充html如何让背景图片充满全图,就是拉伸html语言背景图片拉伸代码:background-size:cover,可以使图片拉伸铺满背景。拓展资料背景(background)属性定义元素的背景效果元素的背景区包括前景之下直到边框边界的所有空间。因此,内容框与内边距都是元素背景的一部分。取值:repeat、no-repeat、repeat-x、repeat-y。repeat:默…

    2022年10月5日
    2
  • CSS3点赞动画特效源码下载

    体验效果:http://hovertree.com/texiao/jquery/62/效果图:下载:http://hovertree.com/h/bjaf/1dvh9ym6.htm特效库:http

    2021年12月22日
    42
  • 堆和栈的区别(队列和栈的区别)

    堆(Heap)与栈(Stack)是开发人员必须面对的两个概念,在理解这两个概念时,需要放到具体的场景下,因为不同场景下,堆与栈代表不同的含义。一般情况下,有两层含义:(1)程序内存布局场景下,堆与栈表示的是两种程序内存分区;(2)数据结构场景下,堆与栈表示两种常用的数据结构。1.程序内存分区——堆与栈栈由操作系统自动分配释放,用于存放函数的参数值、局部变量的值等,其操作方式类…

    2022年4月12日
    62
  • css css样式表 选择器 声明「建议收藏」

    css css样式表 选择器 声明「建议收藏」css部分css指层叠样式表(cascadingstylesheets),它们控制网页内容的外观。使用css设置页面样式时,可以将内容与表现形式分开。网页内容(HTML代码)驻留在HTML文件自身中,而css驻留在另一个文件中(外部样式表*.css)或HTML文档的另一部分(通常为文件头部分)中。写页面时要做到结构(HTML)、样式(css)、行为(js)相分离,

    2022年7月14日
    27

发表回复

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

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