struts2 action 同步锁 策略

1.action中的流程是这样的:

 

  • 1.查询数据库字段field值为a的记录是否存在
  • 2.若1存在,返回此记录,流程终止
  • 3.若1不存在,new 一个对象,并写入数据库,并返回此对象,流程终止

 

 

但是数据库必须保证数据库字段field的值在数据库中不能有重复。

 

 

2 如果不做任何处理,当并发量大的时候,由于查询和写入之间存在时间差,所以会出现数据库字段field的值在数据库中有重复,这就实现不了需求

 

3,如果在action中加同步锁,如何加才能达到效率和需求的平衡,不能锁定整个action吧?

 

 

问题分析:

 

由于读操作的结果会影响写操作,所以此处读操作以及写操作必须放置于一个事务中,并且此事务不能被干扰,此问题有两种解决方案:

1.在action中,此两步操作时锁定一个静态对象

2.在数据库中,对field做索引,并设定为关键字,不允许重复,那么有重复时会报告给前台,并提醒用户不能重复

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值