On 2016/8/24 11:02, Martin Buchholz wrote:
On Tue, Aug 23, 2016 at 9:17 AM, Martin Buchholz <marti...@google.com
<mailto:marti...@google.com>> 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.
Right now I'm even back-pedaling on that. Unless there's an important
use case where atomicity of addAll matters, it's not worth the
confusion to document that some particular implementation is atomic.
The aim of that code was efficiency, not atomicity. In fact, choosing
some batch size and adding in chunks, I/O buffer style, may be a
better choice.
Hi Martin,
Yes, you're right.
But currently, "For example, an iterator operating concurrently with an
addAll operation might view only some of the added elements." is a wrong
statement for ConcurrentLinkedDeque and ConcurrentLinkedQueue, so maybe
we could just remove just this sentence for now.
Thank you
-Hamlin