转载自:Synchronized锁在Spring事务管理下,为啥还线程不安全数据库
原文太多,摘抄一部分总结性的东西过来缓存
Spring AOP致使@Transactional+Synchronized依然可能致使线程不安全,究其缘由是Synchronized并无关住动态代理的执行,也就是Spring并非将每次修改提交到数据库以后才执行下一个相同操做的。示例代码:见原文。安全
能够使用Synchronized将@Transactional包起来,笔者本身再定义了一个包装类,其实原文的留言区补充的直接在Controller或者service的上一层加Synchronized便可。性能
虽然一致性解决了,但原文中笔者也提到了性能很是低下,这个问题能够考虑使用缓存,当达到设置的条件的时候再同步到数据库中,不然就算安全了,性能过低也会致使体验不好,甚至整个系统崩溃掉。.net