RFR of JDk9 8164623: Doc typo in java/util/concurrent/ConcurrentLinkedDeque.java and ConcurrentLinkedQueue.java
Hamlin Li
huaming.li at oracle.com
Wed Aug 24 01:18:29 UTC 2016
Hi Martin,
Thank you for clarifying and taking the bug.
-Hamlin
On 2016/8/24 0:17, Martin Buchholz wrote:
> I didn't see this thread before updating the bug.
>
> I think this is Not a Bug, because """The current atomic addAll is a
> tradeoff; it's efficient, but at the cost of potential loss of
> concurrency if the other collection is slow. It's reasonable for a
> subclass to override addAll to add elements eagerly and non-atomically."""
>
> OTOH it would be reasonable to document the atomicity of the
> implementation in CLD and CLQ as @implNote.
>
> On Tue, Aug 23, 2016 at 5:53 AM, Hamlin Li <huaming.li at oracle.com
> <mailto:huaming.li at oracle.com>> wrote:
>
>
> On 2016/8/23 17:10, David Holmes wrote:
>
> Hi Hamlin,
>
> On 23/08/2016 6:55 PM, Hamlin Li wrote:
>
>
> Below doc is not correct, because for
> ConcurrentLinkedDeque and
> ConcurrentLinkedQueue, addAll is a atomic operation.
>
>
> No it is not! There is no bug here. Are you perhaps confusing
> thread-safe with atomic?
>
> Hi David,
>
> Thank you for review. Please let me clarify.
> Although "public boolean addAll(Collection<? extends E> c)" is not
> protected by any lock or monitor, the implementation in both
> ConcurrentLinked*eque.java still "Atomically append the chain at
> the tail of this collection", so I still think addAll is a atomic
> method. Even though it's not called atomic at this situation, the
> statement "For example, an iterator operating concurrently with an
> addAll operation might view only some of the added elements." is
> wrong, because either all objects in Collection c are viewed by
> iterator, or none of objects in Collection c are viewed by iterator.
>
> Thank you
> -Hamlin
>
>
> David
> -----
>
> "Additionally, the bulk operations addAll, removeAll,
> retainAll,
> containsAll, equals, and toArray are not guaranteed to be
> performed
> atomically. For example, an iterator operating
> concurrently with an
> addAll operation might view only some of the added elements."
> It should be modified as some thing like below:
> "Additionally, the bulk operations removeAll, retainAll,
> containsAll,
> equals, and toArray are not guaranteed to be performed
> atomically."
>
> bug: https://bugs.openjdk.java.net/browse/JDK-8164623
> <https://bugs.openjdk.java.net/browse/JDK-8164623>
> webrev: http://cr.openjdk.java.net/~mli/8164623/webrev.00/
> <http://cr.openjdk.java.net/%7Emli/8164623/webrev.00/>
>
> Thank you
> -Hamlin
>
>
>
More information about the core-libs-dev
mailing list