現代計算機都是馮諾依曼結構的
volatile 變數具備兩種特性,其一是保證該變數對所有執行緒可見,這裡的可見性指的是當乙個執行緒修改了變數的值,那麼新的值對於其他執行緒是可以立即獲取的。其二 volatile 禁止了指令重排。
多執行緒的執行可能造成變數資料的不一致
把該變數宣告為volatile(不穩定的)即可,這就指示jvm,這個變數是不穩定的,每次使用它都到主存中進行讀取。一般說來,多工環境下各任務間共享的標誌都應該加volatile修飾。
volatile修飾的成員變數在每次被執行緒訪問時,都強迫從共享記憶體中重讀該成員變數的值。而且,當成員變數發生變化時,強迫執行緒將變化值回寫到共享記憶體。
synchronized開銷比volatile大。
volatile不保證原子操作,所以,很容易讀到髒資料。
附錄:
JAVA多執行緒之 volatile關鍵字
概要 public class mythread implements runnable override public void run system.out.println 終止執行。public static void main string args throws interruptedex...
多執行緒 volatile關鍵字
在多執行緒中,volatile關鍵字是很重要的乙個知識點,在多執行緒共享資源的時候,每個執行緒資料對外都是不可見的,這就容易出現 髒讀 現象,其實就是執行緒私有堆疊中的資料和公共堆疊中的資料不同步造成的.解決這樣的問題,就要使用volatile關鍵字了。那valotitle關鍵字有什麼用,他是強制執...
多執行緒 Volatile 關鍵字
volatile 關鍵字的作用是變數在多個執行緒之間可見,但不保證資料的原子性 package com.jvm.test class threadvolatiledemo extends thread system.out.println 執行緒停止 public void setruning bo...