首先jvm會在內存中開闢一塊存儲空間做爲線程棧空間,每個線程都有自己的棧(後進先出)。
調用方法時,會在棧中壓入一個棧幀,用來存儲這個方法的參數和局部變量;
方法返回時 ,棧幀就會彈出,方法的參數和局部變量就會清除;
方法調用時,調用棧不斷處於漲落之中,如果調用的層級過深,調用棧可能會溢出
Spring創建的bean默認是單例的,線程調用某個bean時,是持有一個bean對象的副本在自己的空間中,因爲代碼執行的速度很快,所以棧幀的生存時間很短,瞬間生滅。所以局部變量無法被外部使用。當你調用這個bean對象的全局變量時,就會出現線程安全問題了(這時候你需要把bean變爲多例了)!