我有一个类层次结构,其中每个级别包含一些冷字段,子类定义它们自己的冷和热字段:
@Contended
public class Base {
final int cold1;
final int cold2;
}
public class Sub extends Base {
final int subCold1;
@Contended("hot1")
volatile int hot1;
@Contended("hot2")
volatile int hot2;
}
我的问题是:
Sub.subCold1
与Base.cold1
和Base.cold2
打包在一起?答案 0 :(得分:4)
@Contended
不是通用字段布局机制;回答"我怎样才能确定......"是"你不能。" @Contended
是VM的暗示,您希望频繁并发访问此字段,并且VM可能会尝试以减少虚假缓存行共享的发生率的方式进行布局。或者它可能什么都不做;这是提示的本质。