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

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

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

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

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


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

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

相关文章推荐

Java 并发与多线程规范(4) 自旋锁是可重入的吗?CAS与自旋锁的关系,CAS的ABA问题,以及乐观锁,悲观锁,互斥锁,读写锁的整理

CASCAS,自旋锁跟compare and set有关系,但是并不是CAS就是自旋锁。我们看一段代码:/* 不同线程检测最大值 */ AtomicLong largest = new...
  • kkgbn
  • kkgbn
  • 2017-07-19 15:06
  • 284

hibernate悲观锁与乐观锁

  • 2011-12-06 16:06
  • 18KB
  • 下载

Java 多线程:AtomicInteger源码分析——基于CAS的乐观锁实现

AtomicInteger源码分析——基于CAS的乐观锁实现 1. 悲观锁与乐观锁         我们都知道,cpu是时分复用的,也就是把cpu的时间片,分配给不同的thread/p...

Java 多线程10:CAS 与 AtomicInteger(乐观锁)

AtomicInteger源码分析——基于CAS的乐观锁实现悲观锁与乐观锁我们都知道,cpu是时分复用的,也就是把cpu的时间片,分配给不同的thread/process轮流执行,时间片与时间片之间,...

Java多线程 -- JUC包源码分析1 -- CAS/乐观锁

乐观锁思想乐观锁的几种具体实现Java CAS原子操作/AtomicInteger实现ABA问题/AtomicStampedReference实现Mysql 乐观锁实现Mysql MVCC总结 ...

Java多线程 -- JUC包源码分析1 -- CAS/乐观锁

乐观锁思想 乐观锁的几种具体实现 Java CAS原子操作/AtomicInteger实现 ABA问题/AtomicStampedReference实现 Mysql 乐观锁实现 Mysql MVCC ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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