談到 volatile、static 就必須說多線程。多線程
一、一個線程在開始執行的時候,會開啓一片本身的工做內存(本身線程私有),同時將主內存中的數據複製到本身 的工做內存,今後讀寫數據都是本身的工做內存的數據,(我的看法:其中寫數據時會同步到主內存,讀是讀本身的工做內存的數據)線程
二、成員變量被volatile 修飾後,發生改變:每次讀取被修飾的變量都是讀取主內存中的變量,這樣就實現了多線程下的可見性,至關於多個實例面對一個靜態變量。內存
三、成員變量被static 修飾後,每一個實例(不是每一個線程,static不是面對線程而是面對實例 )都共享 一個主內存的數據。當多線狀況下時,對 該成員的操做依然參照第一、 2 點。 同步