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

来源:3-2 线程安全性-原子性-atomic-2

心清如水望而不穿

2019-03-13

写回答

1回答

Jimin

2019-03-13

你好,对于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
3
Jimin
回复
心清如水望而不穿
不到100条的原因是什么,这个看着不属于一致性问题范畴啊
2019-03-13
共3条回复

Java高并发编程,构建并发知识体系,提升面试成功率

构建完整并发与高并发知识体系,倍增高薪面试成功率!

3923 学习 · 832 问题

查看课程