单例带来的线程安全问题
生活随笔
收集整理的這篇文章主要介紹了
单例带来的线程安全问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
其實最初對于單例的線程安全問題一直一知半解,在我們大多使用spring的項目來說,spring管理bean默認是單例的,那么我們的業務邏輯也會是單例的也就是service是單例的,那么這是service是否是安全的呢?
我原來有聽過無狀態的bean是線程安全的,有狀態的就是該bean是有其他變量的,靜態的非靜態的,當方法使用到了這些變量時如果是非final的就會產生線程安全問題,這是我們都很容易理解的,那么無狀態的bean為什么就是線程安全的呢?我一直對此不甚理解。
其實可以這樣理解,每一個線程都是執行一個線程的方法副本,然后得到方法返回數據,但是如果是有變量的情況下執行方法時計算就會出現錯誤。
在無狀態下的方法可以被任意調用而不會產生錯誤,所以大多數情況下 spring管理的bean都是線程安全的,如果bean為有狀態的那么就要考慮關掉singleton了。
總結
以上是生活随笔為你收集整理的单例带来的线程安全问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java压缩解压缩
- 下一篇: linux安装jdk、tomcat