【第22期】观点:IT 行业加班,到底有没有价值?

乐观锁与悲观锁(多线程)

原创 2016年08月31日 11:53:04

线程中的锁可以分为乐观锁和悲观锁,这两个都是实现锁机制的两种办法。

悲观锁:根据字面意思,悲观,就是不是太好的。当一个线程访问这个数据的时候,悲观锁会把这个数据给锁住,不被其他线程所访问,直到这个线程完成了对数据的提交后,其他线程才能够访问或者操作。这样就带来了不便,比如,我们在进行网上订票的时候,一个用户访问了这个系统,访问了这个系统中数据库的数据,就把这个数据给锁住了,这样其他用户根本就看不到数据。这样显然不行,我们想要的效果是用户都可以访问数据,但是只有一个用户提交对这个数据的修改。这就要乐观锁。

乐观锁:当用户要对这个数据进行修改操作时,才把这个数据锁住,也就是实现了一个用户提交操作的用途,它的好处是,用户在查看的时候,数据并没有锁住,当要修改提交的时候,把数据锁住,当其他用户再要提交修改时,就不能修改了。其中的乐观锁里面有一个版本控制器,当修改后,版本就+1,其他用户现在的版本还是0,这样在提交的时候,发现版本号低于现在的,所以,要更新,之后在进行修改。


声明:
该文仅作学习与记录之用,欢迎技术纠错和讨论;
非技术性言论皆为一家之谈,如有不同意见请坚持己见;
如有雷同可能为学习汝之所得,请各位巨人的肩膀还请继续空出位置。

版权声明:转载请注明出处。 举报

相关文章推荐

从线程状态看乐观锁和悲观锁

1-1、众所周知线程有几种主要的状态即:新建、就绪、运行、阻塞、死亡状态。 2-1、悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每...

线程同步(2)——悲观锁和乐观锁

上一篇博客介绍了什么是线程同步,介绍了synchronized的常用用法,这一篇博客总结一下悲观锁和乐观锁。 悲观锁,它假设只要有数据访问就会产生冲突,当一个线程读取数据时就一定要上锁,其他用户无法操...

Java高效并发之乐观锁悲观锁、(互斥同步、非互斥同步)

乐观锁和悲观锁 首先我们理解下两种不同思路的锁,乐观锁和悲观锁。 这两种锁机制,是在多用户环境并发控制的两种所机制。下面看百度百科对乐观锁和悲观锁两种锁机制的定义: 乐观锁( O...

【数据库】使用悲观锁实现线程同步,实现秒杀效果

一、前言       小编在最近的项目中遇到了要对数据库中同一个字段进行操作的一个功能,少数人操作的话,还体现不出来线程的问题,当很多人同时使用,数据量变大,就会出现线程的问题。如何保持线程同步,是...

Java高效并发之乐观锁悲观锁、(互斥同步、非互斥同步)

乐观锁和悲观锁 首先我们理解下两种不同思路的锁,乐观锁和悲观锁。 这两种锁机制,是在多用户环境并发控制的两种所机制。下面看百度百科对乐观锁和悲观锁两种锁机制的定义: 乐观锁( O...

多线程同步方法<一>数据库悲观锁(for update)

悲观锁,正如其名,具有强烈的独占和排他特性。上来就锁住,把事情考虑的比较悲观,它是采用数据库机制实现的,数据库被锁之后其它用户将无法查看,直到提交或者回滚,锁释放之后才可查看。所以悲观锁具有其霸道性。...

java 5多线程乐观锁CAS之于悲观锁synchronized

在Java并发包中有这样一个包,java.util.concurrent.atomic,该包是对Java部分数据类型的原子封装,在原有数据类型的基础上,提供了原子性的操作方法,保证了线程安全。下面以A...

一分钟教你知道乐观锁和悲观锁的区别

悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据...

Java 通过乐观锁(版本号)降低并发时的锁竞争问题

在J2EE应用开发中,经常会碰到需缓存一些不经常变的信息作为应用全局信息,加快应用的处理速度。但不经常变,不代表不会变,一旦变化了,势必就要更新缓存,此时应该如何处理缓存更新问题呢?通行做法如下:  ...

乐观锁与悲观所

悲观锁机制: String hqlStr  =   " from TUser as user where user.name=’Erica’ " ; 2 Query query  =  sess...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)