在了解轻量级锁之前,首先要知道什么是CASCAS--Compare And Swap 比较并交换--通过比较传入的旧值和原内存位置中的值比较,来决定是不是要更新数据。 CAS的语义是“我认为V的值应该为A,如果是,那么将V的值更新为B,否则不修改并告诉V的值实际为多少”,CAS是项 乐观锁 技术,....
分类:
编程语言 时间:
2015-05-30 10:43:51
阅读次数:
175
互斥同步最主要的问题就是进行线程阻塞和唤醒所带来的性能的额外损耗,因此这种同步被称为阻塞同步,它属于一种悲观的并发策略,我们称之为悲观锁。随着硬件和操作系统指令集的发展和优化,产生了非阻塞同步,被称为乐观锁。简单地说,就是先进行操作,操作完成之后再判断操作是否成功,是否有并发问题,如果有则进行失败补偿,如果没有就算操作成功,这样就从根本上避免了同步锁的弊端。
目前,在Java中应用最广泛的非阻塞...
分类:
Web程序 时间:
2015-05-29 13:57:41
阅读次数:
259
悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种...
分类:
其他好文 时间:
2015-05-26 21:40:20
阅读次数:
139
目录一、数据库事务的定义二、数据库事务并发可能带来的问题三、数据库事务隔离级别四、使用Hibernate设置数据库隔离级别五、使用悲观锁解决事务并发问题六、使用乐观锁解决事务并发问题Hibernate事务与并发问题处理(乐观锁与悲观锁)一、数据库事务的定义 数据库事务(Database Trans....
分类:
Web程序 时间:
2015-05-21 17:22:52
阅读次数:
171
1 并发与隔离1.1 事务隔离级别1.2 悲观锁与乐观锁1.3 多版本并发控制 目前多数的乐观锁都基本于版本实现,多版本并发控制(Multi-Version Concurrent Control)是较为成熟的一种乐观锁实现。1.3.1原理 MVCC是并发条件下实现事务隔离的有效手段。其本质是...
分类:
其他好文 时间:
2015-05-10 20:28:42
阅读次数:
165
悲观者与乐观者的做事方式完全不一样,悲观者的人生观是一件事情我必须要百分之百完全控制才会去做,否则就认为这件事情一定会出问题;而乐观者的人生观则相反,凡事不管最终结果如何,他都会先尝试去做,大不了最后不成功。这就是悲观锁与乐观锁的区别,悲观锁会把整个对象加锁占为自有后才去做操作,乐观锁不获取锁直.....
分类:
其他好文 时间:
2015-05-08 12:30:55
阅读次数:
124
51刚完,一上班就听到同事们在聊一个问题,说redis锁的问题,其实吧,这个问题我是不懂的,我才接触到redis不到一个月,也没有去看相关的书籍,偶尔代码出现了一两句redis语句 就会去查一下文档,稍稍看了一下项目代码,然后研究了一下redis,了解到两个词,悲观锁和乐观锁!其实我挺讨厌程序吧这些...
分类:
其他好文 时间:
2015-05-04 13:38:56
阅读次数:
122
一、数据库事务的定义 数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作。事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更....
分类:
Web程序 时间:
2015-04-24 13:55:36
阅读次数:
191
为什么需要锁(并发控制)? 在多用户环境中,在同一时间可能会有多个用户更新相同的记录,这会产生冲突。这就是著名的并发性问题。典型的冲突有:丢失更新:一个事务的更新覆盖了其它事务的更新结果,就是所谓的更新丢失。例如:用户A把值从6改为2,用户B把值从2改为6,则用户A丢失了他的更新。脏读:当一个事务....
分类:
其他好文 时间:
2015-04-16 11:53:57
阅读次数:
129
1.共享锁只用于表级,排他锁用于行级。2.加了共享锁的对象,可以继续加共享锁,不能再加排他锁。加了排他锁后,不能再加任何锁。3.比如一个DML操作,就要对受影响的行加排他锁,这样就不允许再加别的锁,也就是说别的会话不能修改这些行。同时为了避免在做这个DML操作的时候,有别的会话执行DDL,修改表的定...
分类:
其他好文 时间:
2015-04-16 00:59:54
阅读次数:
182