Package org.apache.pekko.dispatch
Class AbstractBoundedNodeQueue<T>
java.lang.Object
org.apache.pekko.dispatch.AbstractBoundedNodeQueue<T>
- Direct Known Subclasses:
BoundedNodeMessageQueue
Lock-free bounded non-blocking multiple-producer single-consumer queue based on the works of:
Andriy Plokhotnuyk (https://github.com/plokhotnyuk)
- https://github.com/plokhotnyuk/actors/blob/2e65abb7ce4cbfcb1b29c98ee99303d6ced6b01f/src/test/scala/akka/dispatch/Mailboxes.scala
(Apache V2: https://github.com/plokhotnyuk/actors/blob/master/LICENSE)
Dmitriy Vyukov's non-intrusive MPSC queue:
- https://www.1024cores.net/home/lock-free-algorithms/queues/non-intrusive-mpsc-node-based-queue
(Simplified BSD)
-
Nested Class Summary
Nested Classes -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionfinal booleanfinal booleanfinal intcapacity()final booleanisEmpty()final Tpeek()protected final AbstractBoundedNodeQueue.Node<T>peekNode()final Tpoll()Removes the first element of this queue if anyfinal AbstractBoundedNodeQueue.Node<T>pollNode()Removes the first element of this queue if anyfinal intsize()Returns an approximation of the queue's "current" size
-
Constructor Details
-
AbstractBoundedNodeQueue
protected AbstractBoundedNodeQueue(int capacity)
-
-
Method Details
-
peekNode
-
peek
- Returns:
- the first value of this queue, null if empty
-
capacity
public final int capacity()- Returns:
- the maximum capacity of this queue
-
add
-
addNode
-
isEmpty
public final boolean isEmpty() -
size
public final int size()Returns an approximation of the queue's "current" size -
poll
Removes the first element of this queue if any- Returns:
- the value of the first element of the queue, null if empty
-
pollNode
Removes the first element of this queue if any- Returns:
- the `Node` of the first element of the queue, null if empty
-