对于CAS是一种有别于synchronized的一种乐观锁实现.是一种非阻塞锁算法.CAS通过与原始预期值进行比较来确定是否修改主内存中数据的一种方案.基于一个线程的失败或者挂起不应该影响其他线程的失败或挂起这样的前提,而提出硬件层次的实现数据处理的互斥。可以自动更新共享数据,而且能够检测到其他线程的干扰,而
compareAndSet() 就用这些代替了锁定。对于实现CAS的原子类(Atom...
分类:
编程语言 时间:
2014-08-21 13:26:04
阅读次数:
236
乐观锁和悲观锁为什么需要锁(并发控制)?在多用户环境中,在同一时间可能会有多个用户更新相同的记录,这会产生冲突。这就是著名的并发性问题。典型的冲突有:l丢失更新:一个事务的更新覆盖了其它事务的更新结果,就是所谓的更新丢失。例如:用户A把值从6改为2,用户B把值从2改为6,则用户A丢失了他的更新。l脏...
分类:
其他好文 时间:
2014-08-18 00:13:53
阅读次数:
205
锁( locking ) 业务逻辑的实现过程中,往往需要保证数据访问的排他性。如在金融系统的日终结算 处理中,我们希望针对某个 cut-off 时间点的数据进行处理,而不希望在结算进行过程中 (可能是几秒...
分类:
其他好文 时间:
2014-07-18 12:03:42
阅读次数:
238
在实际的多用户并发访问的生产环境里边,我们经常要尽可能的保持数据的一致性。而其中最典型的例子就是我们从表里边读取数据,检查验证后对数据进行修改,然后写回到数据库中。在读取和写入的过程中,如果在多用户并发的环境里边,其他用户已经把你要修改的数据进行了修改是非常有可能发生的情况,这样就造成了数据的不一致...
分类:
数据库 时间:
2014-07-18 10:06:03
阅读次数:
299
悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。...
分类:
其他好文 时间:
2014-07-09 13:08:13
阅读次数:
138
一、数据库事务1.概念:数据库事务指把一系列数据库操作组成一个单元,要么全部取消,要么全部完成。即提交和回滚操作。2.特性:(1)原子性表示组成一个事务的多个数据库操作是一个不可分隔的原子单元,只有所有的操作执行成功,整个事务才提交,事务中任何一个数据库操作失败..
分类:
系统相关 时间:
2014-07-02 06:39:12
阅读次数:
234
锁:我们知道,最常用的处理多用户并发访问的方法是加锁。当一个用户锁住数据库中的某个对象时,其他用户就不能再访问该对象。加锁对并发访问的影响体现在锁的粒度上。比如,放在一个表上的锁限制对整个表的并发访问;放在数据页上的锁限制了对整个数据页的访问;放在行上的锁只限制对该行的并发访问。可见行锁粒度最小.....
分类:
其他好文 时间:
2014-06-27 00:51:09
阅读次数:
374
乐观锁与悲观锁文章转自网上好像是玉米田的,忘记了锁(locking)业务逻辑的实现过程中,往往需要保证数据访问的排他性。如在金融系统的日终结算处理中,我们希望针对某个cut-off时间点的数据进行处理,而不希望在结算进行过程中(可能是几秒种,也可能是几个小时),数据再发生变化。此时,我们就需要通过一...
分类:
系统相关 时间:
2014-06-24 09:42:30
阅读次数:
343
上篇文章详细讨论了hql的各种查询方法,在讨论过程中写了代码示例,hql的查询方法类似于sql,查询的方法比较简单,有sql基础的开发人员在使用hql时就会变得相当的简单。Hibernate在操作数据库的同时也提供了对数据库操作的限制方法,这种方法被称为锁机制,Hibernate提供的锁分为两种一种是乐观锁,另外一种是悲观锁。通过使用锁能够控制数据库的并发性操作...
分类:
系统相关 时间:
2014-06-14 14:14:29
阅读次数:
537
1.乐观锁与悲观锁
http://www.blogjava.net/loocky/archive/2006/11/15/81138.html简介:悲观锁依靠数据库提供的锁机制实现。乐观锁基于数据版本记录机制实现,大多还依靠系统中的数据存储逻辑。如果有外部系统,使用乐观锁策略时,需要使用以下几种方式....
分类:
数据库 时间:
2014-06-07 06:05:55
阅读次数:
181