1. 程式人生 > >Spring管理的Bean物件預設是單例模式,怎麼解決執行緒安全問題

Spring管理的Bean物件預設是單例模式,怎麼解決執行緒安全問題

一、在什麼情況下,單例的Bean物件存線上程安全問題

當Bean物件對應的類存在可變的成員變數並且其中存在改變這個變數的執行緒時,多執行緒操作該Bean物件時會出現執行緒安全。

二、原因

當多執行緒中存線上程改變了bean物件的可變成員變數時,其他執行緒無法訪問該bean物件的初始狀態,從而造成資料錯亂

三、解決辦法

1.在Bean物件中儘量避免定義可變的成員變數;

2.在bean物件中定義一個ThreadLocal成員變數,將需要的可變成員變數儲存在ThreadLocal中