在靜態類中不要處理靜態變量,會帶來併發風險;安全
靜態方法內部的變量,若都是局部變量,每次調用靜態方法時都會從新分配內存空間,就是安全的。多線程
局部變量:線程安全。併發
每一個線程執行時將會把局部變量放在各自棧幀的工做內存中,線程間不共享,故不存在線程安全問題。線程
靜態變量:線程非安全。對象
靜態變量即類變量,位於方法區,爲全部對象共享,共享一分內存,一旦靜態變量被修改,其餘對象均對修改可見,故線程非安全。內存
成員變量:單例模式(只有一個對象實例存在)線程非安全,非單例線程安全。虛擬機
成員變量爲對象實例私有,在虛擬機的堆中分配,若在系統中只存在一個此對象的實例,在多線程環境下,「猶如」靜態變量那樣,被某個線程修改後,其餘線程對修改都可見,故線程非安全;若是每一個線程執行都是在不一樣的對象中,那對象與對象之間的成員變量的修改將互不影響,故線程安全。變量