并发编程---填充缓存行消除伪共享

缓存行最常见的是64字节。
需要独占的属性的左填充7个字节,右填充7个字节。
由于JAVA7中会优化掉无用字段。
所以要采用继承的方式绕过优化。

class LhsPadding{
		protected long p1,p2,p3,p4,p5,p6,p7;
	}
	class Value extends LhsPadding{
		protected String str;
	}
	class RhsPadding extends Value{
		protected long p1,p2,p3,p4,p5,p6,p7;
	}

但是在JAVA8中有个@Contended的注解,可以自动填充缓存行。
执行时,必须加上虚拟机参数-XX:-RestrictContended,@Contended注释才会生效。

猜你喜欢

转载自blog.csdn.net/qq_33121481/article/details/84849493