- Spring架構裡的bean,或者說元件,擷取執行個體的時候都是預設的單例模式
- 線程安全問題都是由成員變量及靜态變量引起的。
- 若每個線程中對成員變量、靜态變量隻有讀操作,而無寫操作,一般來說,這個成員變量、靜态變量是線程安全的;
- 若有多個線程同時執行寫操作,一般都需要考慮線程同步,否則就可能影響線程安全。
- 當多個線程調用方法時會不會出現線程安全問題呢?答案是不會,方法存在虛拟機棧中,是線程私有的。
成員變量、局部變量、靜态變量的差別
成員變量 | 局部變量 | 靜态變量 | |
---|---|---|---|
别名 | 執行個體變量 | — | 類變量 |
定義位置 | 在類中,方法外 | 方法中,或者方法的形式參數 | 在類中,方法外 |
初始化值 | 有預設初始化值 | 無,先定義,指派後才能使用 | 有預設初始化值 |
調用方式 | 對象調用 | — | 對象調用,類名調用 |
生命周期 | 與對象共存亡 | 與方法共存亡 | 與類共存亡 |
存儲位置 | 堆中 | 棧中 | 方法區 |
推薦文章:
聊一聊Spring中的線程安全性
JVM記憶體模型