Java線程安全簡述

靜態變量:線程非安全。
靜態變量即類變量,位於方法區,爲所有對象共享,共享一份內存,一旦靜態變量被修改,其他對象均對修改可見,故線程非安全。

實例變量:單例模式(只有一個對象實例存在)線程非安全,非單例線程安全。
實例變量爲對象實例私有,在虛擬機的堆中分配,若在系統中只存在一個此對象的實例,在多線程環境下,“猶如”靜態變量那樣,被某個線程修改後,其他線程對修改均可見,故線程非安全;如果每個線程執行都是在不同的對象中,那對象與對象之間的實例變量的修改將互不影響,故線程安全。

局部變量:線程安全。
每個線程執行時將會把局部變量放在各自棧幀的工作內存中,線程間不共享,故不存在線程安全問題。

靜態方法:線程安全
靜態方法如果沒有使用靜態變量,則沒有線程安全問題。

——如有錯誤,煩請指正。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章