Java中的volatite關鍵字詳解
阿新 • • 發佈:2019-01-09
Java中的volatite關鍵字:
(可見性)
1. Java中的記憶體模型:
(1) 可見性:使用volatite、sychronized和final來操作可見性
指執行緒之間的可見性,一個執行緒修改的狀態對另一個執行緒是可見的。(volatite關鍵字修飾的物件)
(2) 原子性:使用sychronized在lock、unlock來操作原子性
舉例:a = 0;(原子操作) / a++;(非原子操作,存在執行緒安全作用)
(3) 有序性:使用關鍵字volatite和sychronized關鍵字來操作有序性
問題:程式是按照程式碼的先後順序執行,但
單執行緒無影響、多執行緒有影響。
2. volatite原理(稍弱的同步機制):
(1) volite兩大特性:
① 保證“可見性”;(但不能保證“原子性”;)
因此:不能保證執行緒安全問題;
② 禁止指令重排,保證“有序性”;
(2) Volatite變數相對於普通變數的最大特點:
保證了新值能立即同步到主記憶體,以及在使用前從住記憶體重新整理。