Java @Contended与类层次结构

时间:2015-03-01 16:26:22

标签: java concurrency java-8

我有一个类层次结构,其中每个级别包含一些冷字段,子类定义它们自己的冷和热字段:

@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.subCold1Base.cold1Base.cold2打包在一起?
  • 如果超类和子类都定义了一个具有相同名称的争用组,它们是否会被打包到同一个组中?

1 个答案:

答案 0 :(得分:4)

@Contended不是通用字段布局机制;回答"我怎样才能确定......"是"你不能。" @Contended是VM的暗示,您希望频繁并发访问此字段,并且VM可能会尝试以减少虚假缓存行共享的发生率的方式进行布局。或者它可能什么都不做;这是提示的本质。