14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package sun.misc; 27 28 import java.lang.annotation.ElementType; 29 import java.lang.annotation.Retention; 30 import java.lang.annotation.RetentionPolicy; 31 import java.lang.annotation.Target; 32 33 /** 34 * This annotation marks classes and fields as considered to be contended. 35 * @since 1.8 36 */ 37 @Retention(RetentionPolicy.RUNTIME) 38 @Target({ElementType.FIELD, ElementType.TYPE}) 39 public @interface Contended { 40 41 /** 42 Defines the contention group tag. 43 */ 44 String value() default ""; 45 } | 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package sun.misc; 27 28 import java.lang.annotation.ElementType; 29 import java.lang.annotation.Retention; 30 import java.lang.annotation.RetentionPolicy; 31 import java.lang.annotation.Target; 32 33 /** 34 * An annotation expressing that objects and/or their fields are 35 * expected to encounter memory contention, generally in the form of 36 * "false sharing". This annotation serves as a hint that such objects 37 * and fields should reside in locations isolated from those of other 38 * objects or fields. Susceptibility to memory contention is a 39 * property of the intended usages of objects and fields, not their 40 * types or qualifiers. The effects of this annotation will nearly 41 * always add significant space overhead to objects. The use of 42 * {@code @Contended} is warranted only when the performance impact of 43 * this time/space tradeoff is intrinsically worthwhile; for example, 44 * in concurrent contexts in which each instance of the annotated 45 * object is often accessed by a different thread. 46 * 47 * <p>A {@code @Contended} field annotation may optionally include a 48 * contention group tag. All fields with the same tag are considered 49 * as a group with respect to isolation from other groups. A default 50 * annotation without a tag indicates contention with all other 51 * fields, including other {@code @Contended} ones. 52 * 53 * <p>When the annotation is used at the class level, all unannotated 54 * fields of the object are considered to be in the same default 55 * group, separate from any fields that carry their own (possibly 56 * tagged) {@code @Contended} annotations. 57 * 58 * @since 1.8 59 */ 60 @Retention(RetentionPolicy.RUNTIME) 61 @Target({ElementType.FIELD, ElementType.TYPE}) 62 public @interface Contended { 63 64 /** 65 * The (optional) contention group tag. 66 */ 67 String value() default ""; 68 } |