在多線程之中,volatile關鍵字主要是在屬性定義上使用,表示此屬性爲直接數據操作,而不進行副本的拷貝處理。這在一個圖書上就將其錯誤的理解爲同步屬性了。
在正常進行變量處理的時候往往會經歷如下幾個步驟:
- 獲取變量原有的數據內容;
- 利用副本爲變量進行數學計算;
- 將計算後的變量保存到原始空間之中
而如果一個屬性上追加了volatile關鍵字,表示的就是不使用副本,而是直接操作原始變量,相當於節約了拷貝副本,重新保存的步驟
volatile與synchronized的區別:
- volatile主要在屬性上使用,而synchronized是在代碼塊與方法上使用的
- volatile無法描述同步處理,它只是一種內存的處理,避免了副本的操作,而synchronized是實現同步的關鍵字