轉載自:Synchronized鎖在Spring事務管理下,爲啥還線程不安全數據庫
原文太多,摘抄一部分總結性的東西過來緩存
Spring AOP致使@Transactional+Synchronized依然可能致使線程不安全,究其緣由是Synchronized並無關住動態代理的執行,也就是Spring並非將每次修改提交到數據庫以後才執行下一個相同操做的。示例代碼:見原文。安全
能夠使用Synchronized將@Transactional包起來,筆者本身再定義了一個包裝類,其實原文的留言區補充的直接在Controller或者service的上一層加Synchronized便可。性能
雖然一致性解決了,但原文中筆者也提到了性能很是低下,這個問題能夠考慮使用緩存,當達到設置的條件的時候再同步到數據庫中,不然就算安全了,性能過低也會致使體驗不好,甚至整個系統崩潰掉。.net