Incomplete JavaDoc for Collections.synchronizedXYZ

Paul Sandoz paul.sandoz at oracle.com
Wed Oct 14 10:00:19 UTC 2015


Hi Tagir,

Agreed. If you wanna send a patch to this list with updates to the other synchronized* methods i can review push it for you.

Paul.

> On 12 Oct 2015, at 15:18, Tagir F. Valeev <amaembo at gmail.com> wrote:
> 
> Hello!
> 
> With the introduction of Stream API the JavaDoc for
> Collections.synchronizedCollection was updated (as part of work on
> JDK-8023275):
> 
> * It is imperative that the user manually synchronize on the returned
> * collection when traversing it via {@link Iterator}, {@link Spliterator}
> * or {@link Stream}:
> 
> This sounds fine, but the same update is missing on other
> synchronizedXYZ methods. For example, Collections.synchronizedList
> documentation still states:
> 
> * It is imperative that the user manually synchronize on the returned
> * list when iterating over it:
> 
> Nothing about Spliterator and especially about Stream. The same for
> synchronizedSet, synchronizedSortedSet, synchronizedNavigableSet. Even
> though internally all of them inherit the SynchronizedCollection
> implementation, it's not specified that, for example, synchronizedSet
> behavior is somehow connected with synchronizedCollection behavior.
> 
> I think, the corresponding documentation update should be added. It's
> especially important for the Stream as many people see no difference
> between
> 
>   collection.forEach(...);
> 
> And
> 
>   collection.stream().forEach(...);
> 
> But with synchronized collections these two lines are very different:
> the second call is not synchronized.
> 
> What do you think?
> 
> With best regards,
> Tagir Valeev.
> 




More information about the core-libs-dev mailing list