说一下,大家同步怎么解决的
例如,
张三-----获取数据-------更新数据
李四-----获取数据----更新数据数据时同一个那么最终结果将是李四的结果二这里的操作是:张三给数据 + 1,然后李四也给数据 + 1;
最终结果是数据只被加了1;
事实上应该加2。而如果给方法加了同步接口,则效率又会大打折扣。
请高手指教

解决方案 »

  1.   

    如果这个同步的数据是必须的话,就用同步锁采用同步块 synchronized(object obj){...}
    或同步方法同时涉及到多线程调用的问题
      

  2.   

    可采用乐观索的机制,也就是增加一个版本字段。张三 -> 获取数据(版本1) -> 更新数据(发现库里版本跟自己一致,生成版本2)(成功)
    李四 -> 获取数据(版本1) -> 更新数据(发现库里版本比自己高)(失败)
      

  3.   

    i++操作不是原子操作,不能使用volatile修饰变量完成同步的效果。
    所以只能使用synchronized来,为了尽可能提高同步的效率,使用同步块 而不是同步的方法。有兴趣看看http://developer.51cto.com/art/200911/162925.htm 这里面讲得很具体