并发(什么时候应该考虑并发问题)

没错,这周项目又出现的问题。

这次的问题是当外联的处理系统反盘给我们两条信息时候,只更新了第一条,没有更新第二条。或者说可能是第二条也更新了第一条。

因为两次反盘的请求相隔时间是毫秒级的。再次想到了并发的问题,但是当看代码后发现,两次请求并不会有并发的问题。但是不能说每次都把问题归结于并发,然后解决方案就是锁表操作。

第一次问题可以用锁表来预防并发的前提是,系统的交易量不大,每周可能才会有几十次的交互。但是这一次不行,因为有系统中有按月的跑批操作,在某一天的时候会频繁和外联系统交互,所以这一次要换解决方案了。

 

多次观察代码后发现由于逻辑特别复杂,方法中嵌套方法导致有的参数可能在嵌套的方法中会做出修改,又由于方法之间传递的是以对象为载体,更不容易确定其中的属性是否在嵌套方法中修改(这里可能看一下参数传递部分),在讨论之后的解决方案是

1 当传递的参数不多的时候,用基本数据类型,或者String等方式传递,不放入实体对象中。

2 当不得不用实体传递时,提前将可能用到的属性值放入对应的数据类型中。

public String getName(User user) {
    String userId=user.getUserId;
    String userAccountId=user.getUserAccountId
    .
    .
    .
    .
    .
   Account account=getAccount(userId,userAccountId);

}

 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值