Java 悲观锁和乐观锁比较

1.悲观锁

                多个线程竞争应用程序的共享资源

               同时只有一个线程可以获得资源的使用权,其他线程阻塞等待

                获得使用权的线程释放锁后,其他线程再次竞争资源的使用权限

2.乐观锁

           多个线程竞争应用程序的共享资源

           所有线程都可以获得资源的使用权,

          只是使用共享资源读权限的线程,直接结束

          使用共享资源写权限的线程,只有一个线程可以写成功

3.使用场景

悲观锁乐观锁
写多读少读多写少
并发不高高并发
不允许脏读允许脏读

4.实现方案

 Java数据库
悲观锁synchronizedselect ...for update
乐观锁java.util.concurrent包 --CAS使用版本号version控制

 

 

 

 

5.CAS方案的缺点

ABA问题---多个线程修改变量的值,可能经过几次修改,复合某一个线程的CAS条件,其实这个变量已经被修改了很多次
自旋CAS,不成功就一值执行下去,直至成功
只能保证一个变量的原子操作

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值