E - public class SpscLinkedUnpaddedQueue<E> extends BaseLinkedUnpaddedQueue<E>
MessagePassingQueue.Consumer<T>, MessagePassingQueue.ExitCondition, MessagePassingQueue.Supplier<T>, MessagePassingQueue.WaitStrategyP_NODE_OFFSETUNBOUNDED_CAPACITY| Constructor and Description |
|---|
SpscLinkedUnpaddedQueue() |
| Modifier and Type | Method and Description |
|---|---|
int |
fill(MessagePassingQueue.Supplier<E> s)
Stuff the queue with elements from the supplier.
|
int |
fill(MessagePassingQueue.Supplier<E> s,
int limit)
Stuff the queue with up to limit elements from the supplier.
|
void |
fill(MessagePassingQueue.Supplier<E> s,
MessagePassingQueue.WaitStrategy wait,
MessagePassingQueue.ExitCondition exit)
Stuff the queue with elements from the supplier forever.
|
boolean |
offer(E e)
Called from a producer thread subject to the restrictions appropriate to the implementation and
according to the
Queue.offer(Object) interface. |
capacity, drain, drain, drain, getSingleConsumerNodeValue, isEmpty, iterator, newNode, newNode, peek, poll, relaxedOffer, relaxedPeek, relaxedPoll, size, spinWaitForNextNode, toStringlpConsumerNode, lvConsumerNode, spConsumerNodecasProducerNode, lpProducerNode, lvProducerNode, soProducerNode, spProducerNodecontains, containsAll, remove, removeAll, retainAll, toArray, toArrayclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitclearpublic boolean offer(E e)
Queue.offer(Object) interface.
IMPLEMENTATION NOTES:
Offer is allowed from a SINGLE thread.
Offer allocates a new node (holding the offered value) and:
e - not null, will throw NPE if it isMessagePassingQueue.offer(Object),
Queue.offer(java.lang.Object)public int fill(MessagePassingQueue.Supplier<E> s)
MessagePassingQueuewhile(relaxedOffer(s.get());There's no strong commitment to the queue being full at the end of a fill. Called from a producer thread subject to the restrictions appropriate to the implementation.
Unbounded queues will fill up the queue with a fixed amount rather than fill up to oblivion.
WARNING: Explicit assumptions are made with regards to MessagePassingQueue.Supplier.get() make sure you have read
and understood these before using this method.
public int fill(MessagePassingQueue.Supplier<E> s, int limit)
MessagePassingQueue
for(int i=0; i < limit && relaxedOffer(s.get()); i++);
There's no strong commitment to the queue being full at the end of a fill. Called from a producer
thread subject to the restrictions appropriate to the implementation.
WARNING: Explicit assumptions are made with regards to MessagePassingQueue.Supplier.get() make sure you have read
and understood these before using this method.
public void fill(MessagePassingQueue.Supplier<E> s, MessagePassingQueue.WaitStrategy wait, MessagePassingQueue.ExitCondition exit)
MessagePassingQueue
int idleCounter = 0;
while (exit.keepRunning()) {
E e = s.get();
while (!relaxedOffer(e)) {
idleCounter = wait.idle(idleCounter);
continue;
}
idleCounter = 0;
}
Called from a producer thread subject to the restrictions appropriate to the implementation. The main difference
being that implementors MUST assure room in the queue is available BEFORE calling MessagePassingQueue.Supplier.get().
WARNING: Explicit assumptions are made with regards to MessagePassingQueue.Supplier.get() make sure you have read
and understood these before using this method.