I tried to tackle this here:
http://openjdk.markmail.org/thread/eet2zd6ig3pfpv5g
and it's still on my TODO list but not likely to get to top spot soon.

On Tue, Jan 30, 2018 at 7:00 PM, Tagir Valeev <amae...@gmail.com> wrote:

> Hello!
>
> I suggest a patch for java.util.Collections#addAll JavaDoc:
>
> --- Collections.java    2018-01-31 09:39:31.599107500 +0700
> +++ Collections.java.patched    2018-01-31 09:51:11.929059600 +0700
> @@ -5406,4 +5406,8 @@
>       * The behavior of this convenience method is identical to that of
> -     * {@code c.addAll(Arrays.asList(elements))}, but this method is
> likely
> -     * to run significantly faster under most implementations.
> +     * {@code c.addAll(Arrays.asList(elements))} except possible
> +     * difference in intermediate state visibility for concurrent or
> +     * synchronized collections. Calling this method does not guarantee
> +     * that the intermediate state (some of elements are added) is
> invisible,
> +     * even if the collection itself provides such guarantee for its
> +     * {@link Collection#addAll(Collection)} method.
>       *
>
> First, currently it says that Collections#addAll is likely to run
> significantly faster. However it's only marginally faster for
> collections which delegate their addAll method to standard
> AbstractCollection#addAll implementation. Also it could be much slower
> for collections which have optimized addAll (like ArrayList,
> CopyOnWriteArrayList, ConcurrentLinkedDeque, etc.). I don't know a
> single example of collection where Collections#addAll is actually
> significantly faster. Also it says that the behavior is identical,
> while it's not. If, e.g. c is a collection returned from
> synchronizedCollection, then intermediate state of
> c.addAll(Arrays.asList(elements)) would not be visible under
> synchronized(c) in another thread. On the other hand, replacing such
> call with Collections.addAll(c, elements) (to make it "significantly
> faster") will lift this guarantee: now you can see partially added
> array.
>
> What do you think? Should I file an issue?
>
> With best regards,
> Tagir Valeev.
>

Reply via email to