java乐观锁实现_Java 乐观锁原理与实战演练

本文介绍了Java乐观锁的概念和两种实现方式,包括业务状态和版本字段实现。通过实例说明如何在并发审批流程中应用乐观锁,防止数据冲突。在实际操作中,当多个审批人员同时处理任务时,乐观锁确保了事务的正确性和数据的一致性。
摘要由CSDN通过智能技术生成

原标题:Java 乐观锁原理与实战演练

一、 前言

最近在做一个简单审批流程的项目,由于只有固定二级审批所以没有工作流组件,然后就遇到一个审批节点捞单时候,多个人同时审批时候如何保证业务正常运行的问题,我采用的就是乐观锁来解决的。所谓捞单就是一个审批节点可以同时由多个人同时审批。

二、 乐观锁实现方式

乐观锁意思是说多个事务修改数据库中同一条记录时候,并不是在一个事务中使用 for update 锁定这条记录从而防止其他事务在本事务提交前访问这条记录,而是在具体执行更新语句时候进行判断,并通过更新结果影响的行数来判断当前更新是否有效。具体来说有两种实现方式:

2.1 使用业务状态来实现乐观锁

比如一个任务表里面包含如下字段:

id

comment

status

1

123456

new

一个任务的status有:new,operator,manager状态。new状态下有多个A人可以去更新这条记录的comment并且把status更新为operator,但是只能有一个人能成功。operator状态下可以多个B人去更新这题记录的comment并且status更新为manager但是只有一个人能更新成功。

这时候就可以使用status这个字段的值来实现乐观锁,具体来说:

对于A类人来说更新使用: update 表 set comment='',status='operator' where status = 'new' and id = 1;

对应B类型来说更新使用: update 表 set comment='

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值