We should be good.  UnmodifiableSet + iterator are just a wrappers and HashSet 
is thread-safe for read-only usage.  They're now populated in the constructor 
as local variables, so outside the constructor no one has a reference to them.

If we revert back to the code where the hashsets are exposed, then we should 
probably use a CopyOnWriteArraySet as you suggest.


-David

On May 12, 2013, at 11:36 AM, Romain Manni-Bucau <rmannibu...@gmail.com> wrote:

> If you guarantee me unmodifiableSet itertors are thread safe i'm happy
> otherwise please use a copyonwriteset then it'll not say anything more
> Le 12 mai 2013 20:15, "David Blevins" <david.blev...@gmail.com> a écrit :
> 
>> Looked into that this morning.
>> 
>> It occurred to me that would definitely make it thread-safe, but alone
>> doesn't give us the right logic for AnnotatedType.getMethods(), etc. which
>> are supposed to return a complete list not a list being updated.  So we'd
>> still need to block getMethods() calls until initialization is complete.
>> 
>> Updated the code again.  Have a look and let me know if you see any more
>> holes :)  The lists not being thread safe was definitely accurate.
>> 
>> 
>> -David
>> 
>> On May 11, 2013, at 11:49 PM, Romain Manni-Bucau <rmannibu...@gmail.com>
>> wrote:
>> 
>>> I keep my comment/explanation on it, if you want it thread safe at
>> runtime
>>> convert it to sthg thread safe...copyonwriteXXX structures will be
>> enough.
>>> We dont need what you did IMO
>>> Le 12 mai 2013 00:04, "David Blevins" <david.blev...@gmail.com> a écrit
>> :
>>> 
>>>> 
>>>> On May 11, 2013, at 1:59 PM, David Blevins <david.blev...@gmail.com>
>>>> wrote:
>>>> 
>>>>> That being said, I'll see if I can reduce the memory requirement of the
>>>> fix.
>>>> 
>>>> Done.  Managed to reduce the memory requirement of the original code for
>>>> the lazy case as well.  Basically two object references lighter (128
>> bits).
>>>> 
>>>> Thread-safe, lighter and slightly more immutable.
>>>> 
>>>> 
>>>> -David
>>>> 
>>>> 
>> 
>> 

Reply via email to