A modified version of ConcurrentLinkedDequeue which includes direct removal and is portable accorss all JVMs. This is only a fallback if the JVM does not offer access to Unsafe. More specifically, an unbounded concurrent {@linkplain java.util.Deque deque} based on linked nodes.Concurrent insertion, removal, and access operations execute safely across multiple threads. A {@code ConcurrentLinkedDeque} is an appropriate choice whenmany threads will share access to a common collection. Like most other concurrent collection implementations, this class does not permit the use of {@code null} elements.
Iterators are weakly consistent, returning elements reflecting the state of the deque at some point at or since the creation of the iterator. They do not throw {@link java.util.ConcurrentModificationException ConcurrentModificationException}, and may proceed concurrently with other operations.
Beware that, unlike in most collections, the {@code size} methodis NOT a constant-time operation. Because of the asynchronous nature of these deques, determining the current number of elements requires a traversal of the elements, and so may report inaccurate results if this collection is modified during traversal. Additionally, the bulk operations {@code addAll}, {@code removeAll}, {@code retainAll}, {@code containsAll}, {@code equals}, and {@code toArray} are not guaranteedto be performed atomically. For example, an iterator operating concurrently with an {@code addAll} operation might view only someof the added elements.
This class and its iterator implement all of the optional methods of the {@link java.util.Deque} and {@link java.util.Iterator} interfaces.
Memory consistency effects: As with other concurrent collections, actions in a thread prior to placing an object into a {@code ConcurrentLinkedDeque}happen-before actions subsequent to the access or removal of that element from the {@code ConcurrentLinkedDeque} in another thread.
This class is a member of the Java Collections Framework.
@since 1.7
@author Doug Lea
@author Martin Buchholz
@author Jason T. Grene
@param < E> the type of elements held in this collection