Java @Contended 与类层次结构

标签 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 打包在一起?
  • 如果父类(super class)和子类都定义了同名的争用组,它们会被打包到同一个组中吗?

最佳答案

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

关于Java @Contended 与类层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28795952/

相关文章:

从命名管道并发选择

java - 如何查找等待执行的可运行对象的数量

java - 复杂字符串转换为整数

java - 如何在 HiveMQ 客户端中正确使用 SSL 配置? (MQTT)

c++ - 用 concurrent_vector 迭代器算术 : is it safe to assume that subtracting 'begin ()' from an iterator will give the index?

java - CHECKCAST 是否必要?

java - Collection.stream().forEach() 和 Collection.forEach() 有什么区别?

java - Java 中的参数化良构和捕获转换

Java 字符串与枚举的匹配

java - 将 java 项目导出为 JAR 并尝试在 ECLIPSE 的动态 Web 项目中使用它后,找不到资源文件