何谓悲观乐观 乐观对应于生活中乐观的人总是想着事情往好的方向发展,悲观对应于生活中悲观的人总是想着事情往坏的方向发展。这两种人各有优缺点,不能不以场景而定说一种人好于另外一种人。悲观 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)
众所周知,JDK提供了AtomicInteger保证对数字的操作是线程安全的,线程安全我首先想到了synchronized和Lock,但是这种方式又有一个名字,叫做互斥,一次只能有一个持有的线程进入,再加上还有不同线程争夺这个机制,效率比较低,所以又称“悲观”。但是相应的有了乐观的概念,他的思路就是,它不加锁去完成某项操作,如果因为冲突失败就重试,直到成功为止。这种说的比较抽象,我们直接
高频面试题讲解!
转载 2021-08-11 15:12:04
564阅读
乐观 VS 悲观悲观:认为自己在使用数据的时候一定会有线程来修改数据,因此在获取数据的时候会先加锁,确保数据不会被其他线程所修改。(例如:synchronized、lock)乐观:认为自己在使用数据的时候不会有其他线程来修改数据,所以不会添加锁,只是会在更新数据的之前判断有没有被其他线程更新,如果没有,则执行更新,如果有,则采用其他方式(报错或重试等)。乐观锁在Java中是通过使用无编程
文章目录都分类什么是悲观乐观悲观乐观开销对比 都分类什么是悲观乐观乐观对应于生活中乐观的人总是想着事情往好的方向发展,悲观对应于生活中悲观的人总是想着事情往坏的方向发展。这两种人各有优缺点,不能不以场景而定说一种人好于另外一种人。悲观总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到(共享资源
乐观并发控制(乐观)和悲观并发控制(悲观)是并发控制主要采用的技术手段无论是悲观还是乐观,都是人们定义出来的概念,可以认为是一种思想,悲观正是利用数据库本身提供的机制来实现的详见:http://www.hollischuang.com/archives/934简介悲观(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时
          前几天有人问了我一个问题。说假设数据库某些操作不用事务,那么又须要保持数据的一致性,那么该用什么方法替代事务。我就想到了悲观和乐观的思想,以下我解释一下在数据库中的悲观和乐观         1.悲观就是把数据库的一些操作,放在事务其中,依赖数据库的隔离级别,实现对数据改动的封锁。这样做数据一致性能够保持的非常好。可是效率比較低下,悲观从程序的角度上将。就是不在
转载 2017-06-15 21:18:00
163阅读
其实悲观和乐观是一种思想, 所谓悲观:就是默认,每次别人去拿数据的时候都会进行修改,所以每次拿数据都会上锁,防止数据出错。 因此,有别的线程想要拿这个数据的时候,就会堵塞,直到他拿到java的synchronized就是很典型的一个悲观实现。 悲观的好处:数据是都是正确的,例如高并发问 ...
转载 2021-10-14 16:20:00
208阅读
2评论
悲观和乐观
原创 2017-09-25 20:25:59
1110阅读
悲观 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到 传统的关系型数据库里边就用到了很多这种机制 行 都是在做操作之前先上锁,再比如Java里面的同步原语synchronized关键字的实现也是
转载 2021-03-07 22:10:00
133阅读
2评论
学习tml Java 中的悲观和乐观的实现(locking) 业务逻辑的实现过程中,往往需要保证数据访问的排他性。如在金融系统的日终结算 处理中,我们希望针对某个cut-off时间点的数据进行处理,而不希望在结算进行过程中 (可能是几秒...
原创 2023-06-08 11:53:41
112阅读
这是一篇介绍悲观和乐观的入门文章。旨在让那些不了解悲观和乐观的小白们弄清楚什么是悲观,什么是乐观。不同于其他文章,本文会配上相应的图解让大家更容易理解。通过该文,你会学习到如下的知识。1.(Lock)在介绍悲观和乐观之前,让我们看一下什么是,在我们生活中随处可见,我们的门上有,我们存钱的保险柜上有,是用来保护我们财产安全的。程序中也有,当多个线程修改共享变量...
转载 2022-11-07 19:39:06
47阅读
这方面的资料网上比较多,以下均是转载 1、悲观,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观的实现,往往依靠数据库提供的机制(也只有数据库层提供的机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系 统不会修改数据)。2、乐观
转载 精选 2015-10-20 21:41:07
765阅读
可以举个例子:A进程和B进程同时在更新一个balance A进程要对balance扣减20,B进程要对balance扣减15 如何保证balance更新准确? 加悲观 悲观悲观的认为很有可能会有冲突,所以我们要先加锁比较好 所有的进程/线程在更新前先加锁,加锁成功后再进行更新/提交 select ...
转载 2021-10-27 08:48:00
133阅读
2评论
一、什么是悲观,什么是乐观1、(Lock) 在介绍悲观和乐观之前
原创 2023-06-13 14:06:30
43阅读
悲观假定并发环境是悲观的,如果发生并发冲突,就会破坏一致性,所以要通过独占彻底禁止冲突发生。有一个经典比喻,“如果你不锁门,那么捣蛋鬼就回闯入并搞得一团糟”,所以“你只能一次打开门放进一个人,才能时刻盯紧他”。乐观假定并发环境是乐观的,即,虽然会有并发冲突,但冲突可发现且不会造成损害,所以,可以不加任何保护,等发现并发冲突后再决定放弃操作还是重试。可类比的比喻为,“如果你不锁门,那么...
原创 2021-12-15 10:21:34
129阅读
mysql 的悲观和乐观        如果客户端在同一时间内访问同一条数据对数据进行操作时,这时候就会产生数据不一致的问题,我们可以使用mysql的加锁机制,这样可以在一定程度上解决并发访问的问题,mysql中有两种常见的,分别为悲观和乐观悲观和乐观是一种机制不是指具体的。&nbsp
悲观的并发策略——Synchronized互斥 互斥是最常见的同步手段,在并发过程中,当多条线程对同一个共享数据竞争时,它保证共享数据同一时刻只能被一条线程使用,其他线程只有等到释放后才能重新进行竞争。 synchronized就是一个典型的互斥,同时它也是一个JVM级别的,它的实现细节全
转载 2017-09-09 22:41:00
119阅读
2评论
# Java悲观乐观实现 ## 1. 悲观乐观简介 在多线程编程中,悲观和乐观是常用的并发控制方式。悲观认为在整个事务过程中其他线程可能会对数据进行修改,因此在进行操作之前先加锁,避免数据不一致的情况发生。而乐观则认为在整个事务过程中其他线程不会对数据进行修改,因此不主动加锁,只在更新数据时判断一下数据是否被其他线程修改过。 ## 2. 悲观乐观的实现步骤 ###
原创 2023-08-08 08:39:20
27阅读
最近,学习Mybatis-plus时,用到了乐观的插件。然后,我就对乐观悲观进行了了解。我发现,有一张图片很能反应乐观悲观的区别。 乐观首先来看乐观,顾名思义,乐观就是持比较乐观态度的。就是在操作数据时非常乐观,认为别的线程不会同时修改数据,所以不会上锁,但是在更新的时候会判断在此期间别的线程有没有更新过这个数据。那么,当存在更新冲突时,后提交更新的数据因为找不到正
  • 1
  • 2
  • 3
  • 4
  • 5