Class ThreadRobustList<T>
- java.lang.Object
-
- com.yahoo.yolean.concurrent.ThreadRobustList<T>
-
- All Implemented Interfaces:
Iterable<T>
public class ThreadRobustList<T> extends Object implements 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 itemadd(Object)
ed becomes visible throughiterator()
. 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 aConcurrentModificationException
.The
ThreadRobustList
does not permit addingnull
items.The usage of
ThreadRobustList
has no memory consistency effects.- Since:
- 5.1.15
- Author:
- Steinar Knutsen, bratseth
-
-
Constructor Summary
Constructors Constructor Description ThreadRobustList()
Constructs 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
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
add(T item)
Adds an item to this list.boolean
isEmpty()
Returns whether or not this list is empty.Iterator<T>
iterator()
Returns an iterator over the items in this list.-
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 Detail
-
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 Detail
-
isEmpty
public boolean isEmpty()
Returns whether or not this list is empty.
- Returns:
true
if this list has zero items
-
add
public void add(T item)
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
-
-