Class MpscLinkedQueue<T>
- java.lang.Object
-
- io.smallrye.mutiny.helpers.queues.MpscLinkedQueue<T>
-
- Type Parameters:
T- the contained value type
- All Implemented Interfaces:
java.lang.Iterable<T>,java.util.Collection<T>,java.util.Queue<T>
public final class MpscLinkedQueue<T> extends java.lang.Object implements java.util.Queue<T>A multi-producer single consumer unbounded queue. Code from RX Java 2.
-
-
Constructor Summary
Constructors Constructor Description MpscLinkedQueue()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanadd(T t)booleanaddAll(java.util.Collection<? extends T> c)voidclear()booleancontains(java.lang.Object o)booleancontainsAll(java.util.Collection<?> c)Telement()booleanisEmpty()java.util.Iterator<T>iterator()booleanoffer(T e)Tpeek()Tpoll()Tremove()booleanremove(java.lang.Object o)booleanremoveAll(java.util.Collection<?> c)booleanretainAll(java.util.Collection<?> c)intsize()java.lang.Object[]toArray()<T1> T1[]toArray(T1[] a)-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
-
-
-
Method Detail
-
add
public boolean add(T t)
-
remove
public boolean remove(java.lang.Object o)
- Specified by:
removein interfacejava.util.Collection<T>
-
containsAll
public boolean containsAll(java.util.Collection<?> c)
- Specified by:
containsAllin interfacejava.util.Collection<T>
-
addAll
public boolean addAll(java.util.Collection<? extends T> c)
- Specified by:
addAllin interfacejava.util.Collection<T>
-
removeAll
public boolean removeAll(java.util.Collection<?> c)
- Specified by:
removeAllin interfacejava.util.Collection<T>
-
retainAll
public boolean retainAll(java.util.Collection<?> c)
- Specified by:
retainAllin interfacejava.util.Collection<T>
-
offer
public boolean offer(T e)
IMPLEMENTATION NOTES:
Offer is allowed from multiple threads.
Offer allocates a new node and:- Swaps it atomically with current producer node (only one producer 'wins')
- Sets the new node as the node following from the swapped producer node
- Specified by:
offerin interfacejava.util.Queue<T>- See Also:
Queue.offer(Object)
-
poll
public T poll()
IMPLEMENTATION NOTES:
Poll is allowed from a SINGLE thread.
Poll reads the next node from the consumerNode and:- If it is null, the queue is assumed empty (though it might not be).
- If it is not null set it as the consumer node and return it's now evacuated value.
- Specified by:
pollin interfacejava.util.Queue<T>- See Also:
Queue.poll()
-
clear
public void clear()
- Specified by:
clearin interfacejava.util.Collection<T>
-
size
public int size()
- Specified by:
sizein interfacejava.util.Collection<T>
-
isEmpty
public boolean isEmpty()
IMPLEMENTATION NOTES:
Queue is empty when producerNode is the same as consumerNode. An alternative implementation would be to observe the producerNode.value is null, which also means an empty queue because only the consumerNode.value is allowed to be null.- Specified by:
isEmptyin interfacejava.util.Collection<T>
-
contains
public boolean contains(java.lang.Object o)
- Specified by:
containsin interfacejava.util.Collection<T>
-
iterator
public java.util.Iterator<T> iterator()
-
toArray
public java.lang.Object[] toArray()
- Specified by:
toArrayin interfacejava.util.Collection<T>
-
toArray
public <T1> T1[] toArray(T1[] a)
- Specified by:
toArrayin interfacejava.util.Collection<T>
-
-