Path: csiph.com!newsfeed.hal-mli.net!feeder3.hal-mli.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!eternal-september.org!feeder.eternal-september.org!mx04.eternal-september.org!.POSTED!not-for-mail From: markspace <-@.> Newsgroups: comp.lang.java.programmer Subject: Re: Proposed new Java feature Date: Sun, 27 May 2012 09:28:08 -0700 Organization: A noiseless patient Spider Lines: 31 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Sun, 27 May 2012 16:28:10 +0000 (UTC) Injection-Info: mx04.eternal-september.org; posting-host="2kn9RzOWSe/v/hLnHgGT4Q"; logging-data="32112"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18gtX8RK41JhuxZU9XNLjpUxsSFREzLo58=" User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20120428 Thunderbird/12.0.1 In-Reply-To: Cancel-Lock: sha1:+Znsr0xCcfpYDFOTqOmPsgmy0FA= Xref: csiph.com comp.lang.java.programmer:14831 On 5/26/2012 4:11 PM, Mike Schilling wrote: > Proposed feature: a static method on Thread that clears all ThreadLocals for > the current thread. > I can see your points. However, I don't have any real experience with ThreadLocal, and when a neophyte agrees with your argument, that's a red flag. Here's a blog where someone seems to have the same issue as you. At the end of the comments, there's a suggestion to use ThreadLocal::remove(), with the implication that it allows the thread local variable to be garbage collection. Is there a reason that doesn't work for you? My other thought is that "for the current thread" could be improved with "for a given thread." So, inside an Executor, I can just call Thread t = ... // .. use the thread .. Thread.removeLocals( t ); // now add the thread back into the pool... And this seems better because I don't have to rely on the users of a thread remembering to do it themselves. External control seems better here.