请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,课程中使用Atomic保证计数时不出错。如果是做数据库(增删改)操作,在多线程下如何保证原子性呢?

正在回答

1回答

你好,对于db而言,基本上都是哪个请求先到先执行哪个,如果多条sql更新,对于同一个数据库,有对会考虑使用事务保证隔离,但现实场景是很多db操作并不在同一个库,实际中我们选用最多的是引入乐观锁检查,比如要更新数据库表a中id=1那行字段b为2,修改前为b为1,sql大致为:update a set b=2 where id=1 and b=1,然后处理这条sql执行后的返回结果,如果返回0那么就代表本次更新时已经有操作将b的值修改了,需要获取最新值处理或者根据业务做实际的调整,也可以选择性的抛出异常让上游感知本次无法按照预期进行更新

0 回复 有任何疑惑可以回复我~
  • 非常感谢!
    回复 有任何疑惑可以回复我~ 2019-03-13 15:02:23
  • 我用多线程(Callable 写的)写了一个新增的操作,测试的时候执行100次,发现数据库中总是不够100条数据。
    老师,像这种情况,我如何在保证数据一致的前提下,提高效率呢?
    回复 有任何疑惑可以回复我~ 2019-03-13 16:06:12
  • Jimin 回复 提问者 心清如水望而不穿 #3
    不到100条的原因是什么,这个看着不属于一致性问题范畴啊
    回复 有任何疑惑可以回复我~ 2019-03-13 17:11:31
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信