mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 06:45:07 +02:00
8294278: ForkJoinPool.getAndAddPoolIds should use Unsafe.staticFieldBase
Reviewed-by: burban, chegar, martin
This commit is contained in:
parent
eea1a8a95e
commit
cd776093c7
2 changed files with 17 additions and 5 deletions
|
@ -25,6 +25,7 @@
|
|||
|
||||
package java.lang;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.security.AccessController;
|
||||
import java.security.AccessControlContext;
|
||||
import java.security.Permission;
|
||||
|
@ -1107,14 +1108,21 @@ public class Thread implements Runnable {
|
|||
*/
|
||||
private static class ThreadNumbering {
|
||||
private static final Unsafe U;
|
||||
private static final long NEXT;
|
||||
private static final Object NEXT_BASE;
|
||||
private static final long NEXT_OFFSET;
|
||||
static {
|
||||
U = Unsafe.getUnsafe();
|
||||
NEXT = U.objectFieldOffset(ThreadNumbering.class, "next");
|
||||
try {
|
||||
Field nextField = ThreadNumbering.class.getDeclaredField("next");
|
||||
NEXT_BASE = U.staticFieldBase(nextField);
|
||||
NEXT_OFFSET = U.staticFieldOffset(nextField);
|
||||
} catch (NoSuchFieldException e) {
|
||||
throw new ExceptionInInitializerError(e);
|
||||
}
|
||||
}
|
||||
private static volatile int next;
|
||||
static int next() {
|
||||
return U.getAndAddInt(ThreadNumbering.class, NEXT, 1);
|
||||
return U.getAndAddInt(NEXT_BASE, NEXT_OFFSET, 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue