[ 
https://issues.apache.org/jira/browse/LUCENE-2017?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12771561#action_12771561
 ] 

Cédrik LIME commented on LUCENE-2017:
-------------------------------------

Oh, I see! The lifecyle is different, as close()'ing 1 instance of 
ClosableThreadLocal will take care of all threads that have accessed it (vs 
only the caller thread for ThreadLocal).
This is a very subtle difference, and should be documented as such in 
ClosableThreadLocal IMHO:

You only need to close() a ClosableThreadLocal instance once, whereas you need 
to remove() a ThreadLocal instance from every thread that accessed that 
ThreadLocal instance.

That said, wouldn't we risk that one thread close() the ClosableThreadLocal 
when other threads are still using it? That would invalidate currently used 
values!

Given that all threads supposedly follow the same code path, wouldn't a 
remove() be called by each thread?

> CloseableThreadLocal is now obsolete
> ------------------------------------
>
>                 Key: LUCENE-2017
>                 URL: https://issues.apache.org/jira/browse/LUCENE-2017
>             Project: Lucene - Java
>          Issue Type: Improvement
>    Affects Versions: 3.0
>            Reporter: Cédrik LIME
>         Attachments: CloseableThreadLocal.patch
>
>
> Since Lucene 3 depends on Java 5, we can use ThreadLocal#remove() to take 
> care or resource management.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-dev-h...@lucene.apache.org

Reply via email to