特性1:防止該宣告變數上下文指令重排。
(1、2、volatile、3、4),其中12順序可變,34順序可變 但是不能跨越volatile進行排序。
特性2:強制將修改值立即寫入主存,寫入時對已存在cpu的快取行做無效處理。當運用該快取是發現無效,則重新讀取主存。
特性3:不具備原子性, 執行緒1對變數進行讀取操作之後,被阻塞了的話,並沒有對inc值進行修改。然後雖然volatile能保證執行緒2對變數inc的值讀取是從記憶體中讀取的,但是執行緒1沒有進行修改,所以執行緒2根本就不會看到修改的值。
volatile變數特性
1,可見性。對乙個volatile變數的讀,總是能看到 任意執行緒 對這個volatile變數最後的寫入。2,原子性。對任意單個volatile變數的讀 寫具有原子性,但類似於volatile 這種復合操作不具有原子性。當寫入乙個volatile變數時,jmm會把執行緒對應的本地記憶體中的共享變數重...
volatile特性及記憶體語義
1.volatile變數自身具有下列特性 可見性 對乙個volatile變數的讀,總是能看到 任意執行緒 對這個volatile變數最後的寫入。原子性 對任意單個volatile變數的讀 寫具有原子性,但類似於volatile 這種復合操作不具有原子性。從記憶體語義的角度來說,volatile的寫 ...
volatile關鍵字的特性總結
當乙個變數定義為volatile後,它將具備兩個特性 1.保證此變數對所有執行緒的可見性,所謂 可見性 是指當乙個執行緒修改了這個變數的值,新值對於其他執行緒來說是可以立即得知的。通過主記憶體,乙個執行緒修改了共享變數,新值立即同步到主記憶體,其他執行緒讀取該值時從主記憶體中拉取 由於volatil...