悲观锁会把整个对象加锁占为已有后才去做操作,Java中的Synchronized属于悲观锁。悲观锁有一个明显的缺点就是:它不管数据存不存在竞争都加锁,随着并发量增加,且如果锁的时间比较长,其性能开销将会变得很大。

乐观锁不获取锁直接做操作,然后通过一定检测手段决定是否更新数据,这种方式下,已经没有所谓的锁概念了,每条线程都直接先去执行操作,计算完成后检测是否与其他线程存在共享数据竞争,如果没有则让此操作成功,如果存在共享数据竞争则可能不断地重新执行操作和检测,直到成功为止。

参考
https://blog.csdn.net/wuhuayangs/article/details/122105519


redis 中watch指令类似于乐观锁,在事务提交时,如果watch监控的多个KEY中任何KEY的值已经被其他客户端更改,则使用EXEC执行事务时,事务队列将不会被执行,同时返回Nullmulti-bulk应答以通知调用者事务执行失败。

悲观锁与乐观锁的区别 和 Redis中的watch相关推荐

  1. mysql悲观锁和乐观区别_MySQL悲观锁和乐观锁的区别是什么

    MySQL悲观锁和乐观锁的区别是什么 区别如下: 1.概念不同 乐观锁( Optimistic Locking): 顾名思义,对加锁持有一种乐观的态度,即先进行业务操作,不到最后一步不进行加锁,&qu ...

  2. 悲观锁和乐观锁的区别,怎么实现

    悲观锁 每次拿数据都以为别人会修改,所以每次拿数据时都会上锁. 实现:开启事务,启用锁机制 乐观锁 每次拿数据时候都认为别人不会修改,所以不会上锁,但是在更新数据时候会判断在此期间是否有人更新过. 实 ...

  3. 请说一下悲观锁和乐观锁的区别

    悲观锁和乐观锁并不是某个具体的"锁"而是一种并发编程的基本概念,是根据看待并发同步的角度.乐观锁和悲观锁最早出现在数据库的设计当中,后来逐渐被 Java 的并发包所引入. 悲观锁 ...

  4. 悲观锁和乐观锁的区别

    这篇文章讲什么 这是一篇介绍悲观锁和乐观锁的入门文章.旨在让那些不了解悲观锁和乐观锁的小白们弄清楚什么是悲观锁,什么是乐观锁.不同于其他文章,本文会配上相应的图解让大家更容易理解.通过该文,你会学习到 ...

  5. mysql 悲观锁和乐观锁区别

    1.mysql悲观锁:在整个数据处理过程中,将数据处于锁定状态.悲观锁的实现,依靠数据库提供的锁机制,每次会申请锁并加锁和解锁操作 第一步:两个终端均关闭自动提交 左边: 右边: 第二步:左边利用 s ...

  6. 面试官问:说说悲观锁、乐观锁、分布式锁?都在什么场景下使用?有什么技巧?...

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 如何确保一个方法,或者一块代码在高并发情况下,同一时间只能 ...

  7. 说说悲观锁、乐观锁、分布式锁

    作者 | 张飞洪 来源 | https://www.cnblogs.com/jackyfei/p/12142840.html 如何确保一个方法,或者一块代码在高并发情况下,同一时间只能被一个线程执行, ...

  8. Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景

    一.相关名词 |--表级锁(锁定整个表) |--页级锁(锁定一页) |--行级锁(锁定一行) |--共享锁(S锁,MyISAM 叫做读锁) |--排他锁(X锁,MyISAM 叫做写锁) |--悲观锁( ...

  9. Oracle的悲观锁和乐观锁

    为了得到最大的性能,一般数据库都有并发机制,不过带来的问题就是数据访问的冲突.为了解决这个问题,大多数数据库用的方法就是数据的锁定. 数据的锁定分为两种方法,第一种叫做悲观锁,第二种叫做乐观锁.什么叫 ...

  10. 华为应用锁退出立即锁_面试官:你说说互斥锁、自旋锁、读写锁、悲观锁、乐观锁的应用场景...

    前言 生活中用到的锁,用途都比较简单粗暴,上锁基本是为了防止外人进来.电动车被偷等等. 但生活中也不是没有 BUG 的,比如加锁的电动车在「广西 - 窃·格瓦拉」面前,锁就是形同虚设,只要他愿意,他就 ...

最新文章

  1. 应用层下的人脸识别(二):人脸库
  2. 深刻剖析与实战BCELoss详解(主)和BCEWithLogitsLoss(次)以及与普通CrossEntropyLoss的区别(次)
  3. 云计算会杀死开源吗?
  4. 最强奥运会(互联网公司版)
  5. java大数BinInteger
  6. java.jsp.jdbc_Java-jsp使用JDBC访问数据库时显示乱码是怎么回事?
  7. 网络爬虫--19.【Scrapy-Redis实战】分布式爬虫爬取房天下--环境准备
  8. 拒绝双写:巧用Lindorm数据订阅
  9. qt5使用触屏 偶尔没响应_戴着手套玩手机!你试过吗?触屏灵敏又保暖,冬天再也不冻手~...
  10. leetcode -- Clone Graph
  11. explain是mysql的关键字吗_Mysql Explain 关键字
  12. 三维模型等大长方体剖分算法实现
  13. 微处理器 微型计算机 单片机之间有何区别,微处理器、微计算机、微处理机、CPU、单片机、嵌入式处理器它们之间有什么区别?...
  14. 迪杰斯特拉和弗洛伊德算法
  15. vlookup使用步骤_vlookup函数的使用方法
  16. Linux perf 1.1、perf_event内核框架
  17. 教你如何一键批量删除空间说说
  18. Javaweb入门基础(尚硅谷,佟刚老师)笔记(一)
  19. scala简介 什么是Scala?
  20. linux基础篇,数据流重定向

热门文章

  1. Axure 高保真 日期选择器实现 可选任意年/月/日
  2. 类中数组成员变量怎么初始化,数组名与指针的区别
  3. 设计原则:里式替换原则(LSP)
  4. idc机房数据中心租赁机柜的优势
  5. Vue 6. 列表渲染
  6. java-从date中获取年份
  7. JEB2插件教程之一JEB2AutoRenameByTypeInfo.py
  8. 2013年全国各大著名的IT公司薪资待遇大揭密
  9. 简单算法——奇因数代数和
  10. Word或WPS中批量设置表格样式的宏