數組內部元素無法保證可見性

volatile確實可以保證一個引用變量的可見性,但是volatile的數組只針對數組的引用具有volatile的語義,而不是它的元素.
於是可以預見的是類似disruptor這樣的實現最好還是不要用long數組padding的方式來防止false sharing問題,這樣反而會導致可見性問題.
除非使用Unsafe.getObjectVolatile,但是unsafe無法通過較爲正常的方式調用(需要反射獲得),此外unsafe調用門檻較高,需要設置偏移量。
所以,爲了防falseSharing,padding方式還是選擇前後8個long類型的方式.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章