sunjun5249的gravatar头像
sunjun5249 2015-05-13 14:18:15

spring同步关键词synchronized和事务锁@Transactional为什么还有并发?

@Transactional
@Service("projFcd")
public class ProjFcdImpl implements ProjFcd {
....
       @Override
	public synchronized Result investProject(InvestProjBO tp) throws ProjException {
              ......
        }
}

一个service类上加了@Transaction注解,在方法上加了synchronized关键字,可是最后还是发生了并发问题,是事务没配好,还是怎么回事?再问一句这里的事务锁和同步锁的进入出来顺序是怎么样的?

所有回答列表(7)
wentao的gravatar头像
wentao  LV24 2015年5月14日

是不是并发的时候,主键不一样了?

iceneve的gravatar头像
iceneve  LV6 2015年5月14日

ProjFcdImpl的scope不是配的singleton吗?试试配成 prototype

920118227的gravatar头像
920118227 2015年5月14日

@Transactional(isolation = Isolation.SERIALIZABLE)指定事务隔离级别可以解决你的问题。

plq1210的gravatar头像
plq1210  LV2 2015年5月15日

贴出里面业务详细代码

遇见,的gravatar头像
遇见,  LV36 2015年6月3日

如果应用是集群的就有可能并发呀!

jiwubing的gravatar头像
jiwubing 2015年10月28日

@Transactional  synchronized 要分开使用,因为加上@Transactional spring AOP管理事务时,synchronized 并不起作用,可以新建一个不带事务的同步方法,该同步方法在调用investProject(InvestProjBO tp)方法。

之前遇到过这种问题,可以尝试一下这样做。

最代码官方的gravatar头像
最代码官方  LV168 2017年5月16日

刚遇到此类问题,@Transactional和synchronized可以共存处理并发问题。

spring事务中使用java synchronized线程同步字符串无效的案例说明

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友