在Spring事务管理下,Synchronized为啥还线程不安全?

在Spring事务管理下,即使使用了Synchronized关键字,仍可能出现线程安全问题。分析发现,脏写是由于在一个事务未提交时,另一个线程已开始查询数据。解决方案包括移除事务、在事务内使用Synchronized或采用分布式锁。结论强调,理解同步和事务的交互至关重要,避免假设和未经验证的实践。
摘要由CSDN通过智能技术生成

在synchronized 锁住方法的情况下,竟然出现了脏写

Tips
昨天本来打算是准备着一支烟 一杯咖啡 一个bug写一天的,突然我们组长跟我们说线上环境报错了,
还出现了"服务器异常,请联系管理员"
这特么不是一级事故吗?虽然有测试再前面扛枪。但是是我负责的直播模块,心理慌的一批(ps 报错图当时没保存了)

分析事故原因

因为是报错(因为我做这条数据查询的时候是selectOne 所以会报出现了sql异常) 原因到是很快找到了 数据库出现了脏写如图:

我负责的是直播模块 其中的一个业务是直播结束后第三方会通知我去拉取直播的回放,
但是这个回放有可能一条,也有可能是多条,但是我们的业务要求是只需要保存一条直播回放所以我这会做如下操作:

我再做插入之前我会做一个校验,并且我还加了一个方法级别的锁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值