缓存行对齐:对于有些特别敏感的数字,会存在线程高竞争的访问,为了保证不发生伪共享,可是使用缓存行对齐的编程方式。
disruptor: public long p1,p2,p3,p4,p5,p6,p7 //cathe padding private volatile cursor = INITIAL_CURSOR_VALUE; public long p8,p9,p10,p11,p12,p13,p14 //cathe padding
以上方式只针对intel CPU 生效,所以用下面方式对于任何CPU都生效:
另外JDK8中 注解@Contended 注解可以保证不和别的在同一缓存行 需要加上:JVM -XX:-RestrictContended
JDK7中,很多采用long padding提高效率。