Class ThreadRobustList<T>
- All Implemented Interfaces:
Iterable<T>
This class implements a thread-safe, lock-free list of Objects that supports multiple readers and a single writer.
Because there are no locks or other memory barriers involved, there exists no happens-before relationship
among calls to either methods of the ThreadRobustList
. This means that there are no guarantees as to when
(or even if) an item add(Object)
ed becomes visible through iterator()
. If visibility is required,
either use explicit synchronization between reader and writer thread, or move to a different concurrent collection
(e.g. CopyOnWriteArrayList
).
Because it is lock-free, the ThreadRobustList
has minimal overhead to both reading and writing. The
iterator offered by this class always observes the list in a consistent state, and it never throws a
ConcurrentModificationException
.
The ThreadRobustList
does not permit adding null
items.
The usage of ThreadRobustList
has no memory consistency effects.
- Since:
- 5.1.15
- Author:
- Steinar Knutsen, bratseth
-
Constructor Summary
ConstructorDescriptionConstructs a new instance of this class with an initial capacity of10
.ThreadRobustList
(int initialCapacity) Constructs a new instance of this class with a given initial capacity. -
Method Summary
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
Constructor Details
-
ThreadRobustList
public ThreadRobustList()Constructs a new instance of this class with an initial capacity of
10
. -
ThreadRobustList
public ThreadRobustList(int initialCapacity) Constructs a new instance of this class with a given initial capacity.
- Parameters:
initialCapacity
- the initial capacity of this list
-
-
Method Details
-
isEmpty
public boolean isEmpty()Returns whether or not this list is empty.
- Returns:
true
if this list has zero items
-
add
Adds an item to this list. As opposed to
CopyOnWriteArrayList
, items added to this list may become visible to iterators created before a call to this method.- Parameters:
item
- the item to add- Throws:
NullPointerException
- ifitem
isnull
-
iterator
Returns an iterator over the items in this list. As opposed to
CopyOnWriteArrayList
, this iterator may see items added to theThreadRobustList
even if they occur after a call to this method.The returned iterator does not support
remove()
.
-