RFR 8160710: Enable Thread to grant VarHandle field access to ThreadLocalRandom/Striped64

Doug Lea dl at cs.oswego.edu
Thu Jan 12 00:12:06 UTC 2017


On 01/11/2017 06:39 PM, Martin Buchholz wrote:
> Doug, please try to remember the details of the thread group code.
>

>     >
>     > The threadgroup creation code that uses cheating has always seemed fishy to me.  The straightforward
>     >
>     >     /**
>     >      * Returns a new group with the system ThreadGroup (the
>     >      * topmost, parent-less group) as parent.
>     >      */
>     >     static final ThreadGroup createThreadGroup(String name) {
>     >         if (name == null)
>     >             throw new NullPointerException();
>     >         ThreadGroup group = Thread.currentThread().getThreadGroup();
>     >         for (ThreadGroup p; (p = group.getParent()) != null; )
>     >             group = p;
>     >         return new ThreadGroup(group, name);
>     >     }
>     >
>     > passes all tests.  That could be wrapped in a doPrivileged, or we could add something more principled to ThreadGroup itself.  I don't know what the motivations are for the threadgroup code.
>     >
>

There was a some point a problem with using doPrivileged in the
context of FJP.commonPool initialization, so we went with the
suggestion of using unsafe.

And at a different point, we decided to place
all non-VarHandle-amenable code into TLR so that it could be
replaced all at once when bootstrap problems were addressed.

And at a different point (which we hope is Now :-) we can
replace the unnecessary prior workarounds.

-Doug





More information about the core-libs-dev mailing list