1,volatile只在多線程程序中有意義。
2,為了提高性能,編譯器工作時會進行壹些優化,如指令排序,甚至跳過壹些指令。如:
var
a=1;
a=2;
a=3;
編譯後的結果可能就只執行
a
=
3
3,程序運行時,普通變量會有緩存機制(如cpu緩存、線程本地緩存等),程序讀取時先從緩存讀取,所以多線程的程序運行時可能存在臟讀問題。即第壹個線程已經修改了變量值,但第二個線程還在使用緩存中的舊數據。
volatile的作用就是告訴編譯器,不要對使用該變量的代碼進行優化,每次讀寫操作都訪問變量的原始數據。