struts2 action 同步锁 策略

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

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

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

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

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

问题分析:

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

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

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

猜你喜欢

转载自yongkuang.iteye.com/blog/1551595