On 8 Dec 2015, at 14:49, David M. Lloyd <david.ll...@redhat.com> wrote:
> Great! Now all we need is a way to tell threads to remove all thread locals > on exit, and the scourge of ITL might be somewhat mitigated. :-) David, The fields of Thread that hold references to TLs and ITLs are cleared at exit, as seen from the snippet below. Or have I missed your point? public class Thread { .. private void exit() { if (group != null) { group.threadTerminated(this); group = null; } /* Aggressively null out all reference fields: see bug 4006245 */ target = null; /* Speed the release of some of these resources */ threadLocals = null; inheritableThreadLocals = null; inheritedAccessControlContext = null; blocker = null; uncaughtExceptionHandler = null; } } -Chris. > On 12/08/2015 08:15 AM, Chris Hegarty wrote: >> Many threads created by the platform are short lived and perform some >> simple async operation on behalf of the platform. These threads typically >> use/extend sun.misc.ManagedLocalsThread. This is a convenient internal >> API that can be used to create threads that do not wish to inherit initial >> values from inheritable thread-local variables. >> >> I'd like to propose an additional java.lang.Thread constructor that exposes >> the ability to explicitly "opt out" of inheriting these initial values ( from >> inheritable thread-local variables ). This seems like useful general >> functionality, given the amount of usage in the JDK of the internal API. >> >> This new public API can then be used to replace usages of the internal >> sun.misc.ManagedLocalsThread. As part of this bug I've only retrofitted >> the usage in the sources of the base module. Other modules can be done >> as a follow up. >> >> Webrev: >> http://cr.openjdk.java.net/~chegar/8056152/00/webrev/ >> >> -Chris. >> >> [1] https://bugs.openjdk.java.net/browse/JDK-8056152 >> > > -- > - DML