- 博客(1)
- 收藏
- 关注
原创 记一次并发插入时的Synchronized失效
因为@Transactional是利用AOP实现的,看起来该方法结束后就立即提交了事务,实际上并没有,而该方法结束之后会立即释放锁,新的线程已经拿到锁并开始执行方法,而提交事务的操作还在执行中。该Service方法上添加了@Transactional注解,开启事务,锁也是添加在该方法上,导致锁的有效范围在事务的范围内,在事务还未提交时,新的线程已经拿到锁并开始查询,因此查不到刚刚添加的数据。同理,添加一个方法,将锁加在该方法上,在该方法内部调用原方法也可以解决。原因很简单,但容易在做代码修改时遗漏。
2024-02-28 17:17:38
481
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人