8014233: java.lang.Thread should have @Contended on TLR fields
Add the @Contended over three TLR fields.
Reviewed-by: psandoz, chegar, dholmes, dl
diff --git a/jdk/src/share/classes/java/lang/Thread.java b/jdk/src/share/classes/java/lang/Thread.java
index bb175ff..eb89670 100644
--- a/jdk/src/share/classes/java/lang/Thread.java
+++ b/jdk/src/share/classes/java/lang/Thread.java
@@ -1993,12 +1993,21 @@
// The following three initially uninitialized fields are exclusively
- // managed by class java.util.concurrent.ThreadLocalRandom.
+ // managed by class java.util.concurrent.ThreadLocalRandom. These
+ // fields are used to build the high-performance PRNGs in the
+ // concurrent code, and we can not risk accidental false sharing.
+ // Hence, the fields are isolated with @Contended.
+
/** The current seed for a ThreadLocalRandom */
+ @sun.misc.Contended("tlr")
long threadLocalRandomSeed;
+
/** Probe hash value; nonzero if threadLocalRandomSeed initialized */
+ @sun.misc.Contended("tlr")
int threadLocalRandomProbe;
+
/** Secondary seed isolated from public ThreadLocalRandom sequence */
+ @sun.misc.Contended("tlr")
int threadLocalRandomSecondarySeed;
/* Some private helper methods */