@Contended

表示被注解的类或/字段可能存在内存竞争,通常采用伪共享(false sharing)。此注释用作提示,此类对象和字段应驻留在与其他对象或字段的位置隔离的位置。对内存争用的易感性是对象和字段的预期用法的属性,而不是它们的类型或限定符。此注解的代价是很大的空间开销。仅当此时间/空间权衡的性能影响本质上值得时,才能使用此注解。

对于字段有一个可选的标签竞争组(contention group)。一个竞争组定义了一个或多个字段,竞争组之间是隔离的。但同一个竞争组中的字段可能不隔离。如果没有争用组标记(或使用默认的空标记:“”),则每个字段都驻留在其自己的不同和匿名争用组中。

当此注解应用于类级别时,效果等同于将此类中所有没有 @Contended 注解的字段归类到同一个匿名组中。使用类级别注释,实现可以选择不同的隔离技术,例如隔离整个对象,而不是隔离不同的字段。此时竞争组毫无意义而被忽略。

类级别注释不会被继承,并且对任何子类中声明的字段都没有影响。但是,所有注释的效果对所有子类实例仍然有效,从而隔离了所有已定义的竞争组竞争组标记不是继承的,并且在超类和子类中使用的相同标记表示不同的争用组。

你可能感兴趣的:(@Contended)