数组内部元素无法保证可见性

volatile确实可以保证一个引用变量的可见性,但是volatile的数组只针对数组的引用具有volatile的语义,而不是它的元素.
于是可以预见的是类似disruptor这样的实现最好还是不要用long数组padding的方式来防止false sharing问题,这样反而会导致可见性问题.
除非使用Unsafe.getObjectVolatile,但是unsafe无法通过较为正常的方式调用(需要反射获得),此外unsafe调用门槛较高,需要设置偏移量。
所以,为了防falseSharing,padding方式还是选择前后8个long类型的方式.

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