Spring中的synchronized
Spring中的synchronized容易出现不生效的情况,比如:在controller层加事物注解,内部代码块中含synchronized。
正确使用方式应当是:同步代码块在事物之前开启
为什么先调用@Transactional再调用synchronized会出现问题?
此处原文链接:https://blog.csdn.net/Rambo_Yang/article/details/119885524
1)事务开启在同步代码块之前
2)事务是 Spring 的 AOP 开启的,进入方法前,AOP 就开启了事务
3)事务开启以后才进入方法,再进入同步代码块加锁
4)当同步方法执行结束后,释放锁并提交事物(问题就出现在这里:如果在释放锁和提交事物之间有其它的线程请求,那么处理后的数据没有被提交,导致 synchronized 同步不生效的问题)
欢迎加入 Typecho 大家族