Class AbstractBoundedNodeQueue<T>

java.lang.Object
org.apache.pekko.dispatch.AbstractBoundedNodeQueue<T>
Direct Known Subclasses:
BoundedNodeMessageQueue

public abstract class AbstractBoundedNodeQueue<T> extends Object
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)
  • Constructor Details

    • AbstractBoundedNodeQueue

      protected AbstractBoundedNodeQueue(int capacity)
  • Method Details

    • peekNode

      protected final AbstractBoundedNodeQueue.Node<T> peekNode()
    • peek

      public final T peek()
      Returns:
      the first value of this queue, null if empty
    • capacity

      public final int capacity()
      Returns:
      the maximum capacity of this queue
    • add

      public final boolean add(T value)
    • addNode

      public final boolean addNode(AbstractBoundedNodeQueue.Node<T> n)
    • isEmpty

      public final boolean isEmpty()
    • size

      public final int size()
      Returns an approximation of the queue's "current" size
    • poll

      public final T poll()
      Removes the first element of this queue if any
      Returns:
      the value of the first element of the queue, null if empty
    • pollNode

      public final AbstractBoundedNodeQueue.Node<T> pollNode()
      Removes the first element of this queue if any
      Returns:
      the `Node` of the first element of the queue, null if empty