简单总结一下java高并发的乐观锁与悲观锁

首先,乐观锁和悲观锁都属于数据库层次控制并发问题

悲观锁 一锁就锁定了数据(整表或者一行数据) 其他所有的需求查询等都不能进来,使得请求队列不断加长,对于交互十分不友好
乐观锁:
乐观锁大多是通过数据库版本(version)记录机制实现的,即为数据增加一个版本标识,在基于数据库表的解决方案中,一般是
在表中增加一个version字段来实现,读取数据时将版本号一起读取,在 更新操作 时将版本号加1,将提交的数据的版本号和数据库中
的数据版本号进行比较,若大于数据库中数据的版本号,则提交更新数据,否则认为是过期数据,无法提交,抛出异常。
例如 hibernate:
在 Stu.hbm.xml 中的 的class节点中 加上 optimistic-lock="version"
并在id节点后 加上 <version column="version" name="version" type="java.lang.Long" />
或 在实体类 Stu.class中 只需要在version上面添加 @Version注解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值