Spring中的synchronized容易出现不生效的情况,比如:在controller层加事物注解,内部代码块中含synchronized。

正确使用方式应当是:同步代码块在事物之前开启

为什么先调用@Transactional再调用synchronized会出现问题?

此处原文链接:https://blog.csdn.net/Rambo_Yang/article/details/119885524

1)事务开启在同步代码块之前
2)事务是 Spring 的 AOP 开启的,进入方法前,AOP 就开启了事务
3)事务开启以后才进入方法,再进入同步代码块加锁
4)当同步方法执行结束后,释放锁并提交事物(问题就出现在这里:如果在释放锁和提交事物之间有其它的线程请求,那么处理后的数据没有被提交,导致 synchronized 同步不生效的问题)

标签: none

添加新评论