原创转载请注明出处:https://agilestyle.iteye.com/blog/2443638
悲观锁
总是假设最坏的情况,每次拿数据的时候都认为别人会修改,每次拿数据都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁,共享资源每次只给一个线程使用,其他线程阻塞,用完后才把资源转让给其他线程。
比如:
RDBMS中的行锁、表锁等都是在操作之前先上锁
Java中synchronized和ReentrantLock等读占锁就是悲观锁思想的实现
乐观锁
总是假设最好的情况,每次拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号机制和CAS算法实现。乐观锁用于多读的应用类型,这样可以提高吞吐量。
比如:
Java中JUC.Atomic包下面的原子变量类就是使用了乐观锁的CAS实现
相关推荐
主要介绍了thinkPHP框架乐观锁和悲观锁,结合实例形式分析了框架乐观锁和悲观锁的原理及thinkPHP相关实现技巧,需要的朋友可以参考下
Hibernate的乐观锁与悲观锁的文档,帮助学习Hibernate的乐观锁与悲观锁,让你们学得更轻松。
介绍数据库事务的定义和事务带来的问题,详细讲解乐观锁与悲观锁的区别
详细介绍了Oracle中乐观锁、悲观锁的原理及应用,并有实例
面试必备之乐观锁与悲观锁.pdf
Hibernate乐观锁和悲观锁分析,针对在使用HIBERNATE时怎么配置乐观锁进行了详细的范例讲解
[数据库事务与锁]详解七 深入理解乐观锁与悲观锁
其中通过 version 实现的乐观锁机制是 Hibernate 官方推荐的乐观锁实现,同时也是 Hibernate 中,目前唯一在数据对象脱离 Session 发生修改的情况下依然有效的锁机制。因此,一般情况下,我们都选择 version 方式...
java,乐观锁,悲观锁详解释
悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部 系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状 态。悲观锁的实现,往往依靠数据库提供的锁机制...
p278 - p288 乐观锁和悲观锁
面试必备之乐观锁与悲观锁.zip
各种锁汇总,乐观锁、悲观锁、分布式锁、可重入锁、互斥锁、读写锁、分段锁、类锁、行级锁等
hibernate的乐观锁和悲观锁,两种锁搞定一切
面试必备之乐观锁与悲观锁.pdf
面试必备之乐观锁与悲观锁
AQS源码分析一、锁的介绍1.1 乐观锁/悲观锁1.2 共享锁/独占锁1.3 公平锁/非公平锁1.4 小结二、AQS框架结构介绍2.1 ...乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度,在java和数据库中都有应用。