< prev index next >

src/java.base/share/classes/jdk/internal/misc/InnocuousThread.java

Print this page

        

*** 96,107 **** }); } private InnocuousThread(ThreadGroup group, Runnable target, String name, ClassLoader tccl) { super(group, target, name, 0L, false); ! UNSAFE.putObjectRelease(this, INHERITEDACCESSCONTROLCONTEXT, ACC); ! UNSAFE.putObjectRelease(this, CONTEXTCLASSLOADER, tccl); } @Override public void setUncaughtExceptionHandler(UncaughtExceptionHandler x) { // silently fail --- 96,107 ---- }); } private InnocuousThread(ThreadGroup group, Runnable target, String name, ClassLoader tccl) { super(group, target, name, 0L, false); ! UNSAFE.putReferenceRelease(this, INHERITEDACCESSCONTROLCONTEXT, ACC); ! UNSAFE.putReferenceRelease(this, CONTEXTCLASSLOADER, tccl); } @Override public void setUncaughtExceptionHandler(UncaughtExceptionHandler x) { // silently fail
*** 118,129 **** /** * Drops all thread locals (and inherited thread locals). */ public final void eraseThreadLocals() { ! UNSAFE.putObject(this, THREAD_LOCALS, null); ! UNSAFE.putObject(this, INHERITABLE_THREAD_LOCALS, null); } // ensure run method is run only once private volatile boolean hasRun; --- 118,129 ---- /** * Drops all thread locals (and inherited thread locals). */ public final void eraseThreadLocals() { ! UNSAFE.putReference(this, THREAD_LOCALS, null); ! UNSAFE.putReference(this, INHERITABLE_THREAD_LOCALS, null); } // ensure run method is run only once private volatile boolean hasRun;
*** 156,169 **** (tk, "contextClassLoader"); long tg = UNSAFE.objectFieldOffset(tk, "group"); long gp = UNSAFE.objectFieldOffset(gk, "parent"); ThreadGroup group = (ThreadGroup) ! UNSAFE.getObject(Thread.currentThread(), tg); while (group != null) { ! ThreadGroup parent = (ThreadGroup)UNSAFE.getObject(group, gp); if (parent == null) break; group = parent; } final ThreadGroup root = group; --- 156,169 ---- (tk, "contextClassLoader"); long tg = UNSAFE.objectFieldOffset(tk, "group"); long gp = UNSAFE.objectFieldOffset(gk, "parent"); ThreadGroup group = (ThreadGroup) ! UNSAFE.getReference(Thread.currentThread(), tg); while (group != null) { ! ThreadGroup parent = (ThreadGroup)UNSAFE.getReference(group, gp); if (parent == null) break; group = parent; } final ThreadGroup root = group;
< prev index next >