最贊回答 / 鬼羽子
32bit數(shù)據(jù)的讀寫是一個原子操作,對64bit數(shù)據(jù)加volatile僅僅只是保證數(shù)據(jù)的讀寫具有不可重入性以及可見性——這樣就夠了。第一個32bit讀完之后,才允許讀第二個32bit,且必須從主線程內(nèi)存中刷新,這樣可以保證數(shù)據(jù)的有效性。
2015-05-17
最贊回答 / meetyu
volatile本身不保證獲取和設(shè)置操作的原子性,僅僅保持修改的可見性。但是java的內(nèi)存模型保證聲明為volatile的long和double變量的get和set操作是原子的
2015-05-06