Synchronized鎖在Spring事務管理下,爲啥還線程不安全

轉載自:Synchronized鎖在Spring事務管理下,爲啥還線程不安全數據庫

原文太多,摘抄一部分總結性的東西過來緩存

Spring AOP致使@Transactional+Synchronized依然可能致使線程不安全,究其緣由是Synchronized並無關住動態代理的執行,也就是Spring並非將每次修改提交到數據庫以後才執行下一個相同操做的。示例代碼:見原文安全

能夠使用Synchronized將@Transactional包起來,筆者本身再定義了一個包裝類,其實原文的留言區補充的直接在Controller或者service的上一層加Synchronized便可。性能

雖然一致性解決了,但原文中筆者也提到了性能很是低下,這個問題能夠考慮使用緩存,當達到設置的條件的時候再同步到數據庫中,不然就算安全了,性能過低也會致使體驗不好,甚至整個系統崩潰掉。.net

相關文章
相關標籤/搜索