abstract class AbstractNodeQueue[T] extends AtomicReference[Node[T]]
Lock-free MPSC linked queue implementation based on Dmitriy Vyukov's non-intrusive MPSC queue: https://www.1024cores.net/home/lock-free-algorithms/queues/non-intrusive-mpsc-node-based-queue
This queue could be wait-free (i.e. without the spinning loops in peekNode and pollNode) if it were permitted to return null while the queue is not quite empty anymore but the enqueued element is not yet visible. This would break actor scheduling, though.
- Annotations
 - @SuppressWarnings()
 - Source
 - AbstractNodeQueue.java
 
- Alphabetic
 - By Inheritance
 
- AbstractNodeQueue
 - AtomicReference
 - Serializable
 - AnyRef
 - Any
 
- by any2stringadd
 - by StringFormat
 - by Ensuring
 - by ArrowAssoc
 
- Hide All
 - Show All
 
- Public
 - Protected
 
Value Members
-   final  def !=(arg0: Any): Boolean
- Definition Classes
 - AnyRef → Any
 
 -   final  def ##: Int
- Definition Classes
 - AnyRef → Any
 
 -    def +(other: String): String
- Implicit
 - This member is added by an implicit conversion from AbstractNodeQueue[T] toany2stringadd[AbstractNodeQueue[T]] performed by method any2stringadd in scala.Predef.
 - Definition Classes
 - any2stringadd
 
 -    def ->[B](y: B): (AbstractNodeQueue[T], B)
- Implicit
 - This member is added by an implicit conversion from AbstractNodeQueue[T] toArrowAssoc[AbstractNodeQueue[T]] performed by method ArrowAssoc in scala.Predef.
 - Definition Classes
 - ArrowAssoc
 - Annotations
 - @inline()
 
 -   final  def ==(arg0: Any): Boolean
- Definition Classes
 - AnyRef → Any
 
 -   final  def accumulateAndGet(arg0: Node[T], arg1: BinaryOperator[Node[T]]): Node[T]
- Definition Classes
 - AtomicReference
 
 -   final  def add(value: T): Unit
Add an element to the head of the queue.
Add an element to the head of the queue.
This method can be used from any thread.
- value
 the element to be added; must not be null
 -   final  def addNode(n: Node[T]): Unit
Add an element to the head of the queue, providing the queue node to be used.
Add an element to the head of the queue, providing the queue node to be used.
This method can be used from any thread.
- n
 the node containing the element to be added; both must not be null
 -   final  def asInstanceOf[T0]: T0
- Definition Classes
 - Any
 
 -    def clone(): AnyRef
- Attributes
 - protected[lang]
 - Definition Classes
 - AnyRef
 - Annotations
 - @throws(classOf[java.lang.CloneNotSupportedException]) @HotSpotIntrinsicCandidate() @native()
 
 -   final  def compareAndExchange(arg0: Node[T], arg1: Node[T]): Node[T]
- Definition Classes
 - AtomicReference
 
 -   final  def compareAndExchangeAcquire(arg0: Node[T], arg1: Node[T]): Node[T]
- Definition Classes
 - AtomicReference
 
 -   final  def compareAndExchangeRelease(arg0: Node[T], arg1: Node[T]): Node[T]
- Definition Classes
 - AtomicReference
 
 -   final  def compareAndSet(arg0: Node[T], arg1: Node[T]): Boolean
- Definition Classes
 - AtomicReference
 
 -   final  def count(): Int
This method returns an upper bound on the queue size at the time it starts executing.
This method returns an upper bound on the queue size at the time it starts executing. It may spuriously return smaller values (including zero) if the consumer pulls items out concurrently.
This method can be used from any thread.
- returns
 an upper bound on queue length at some time in the past
- Annotations
 - @SuppressWarnings()
 
 -    def ensuring(cond: (AbstractNodeQueue[T]) => Boolean, msg: => Any): AbstractNodeQueue[T]
- Implicit
 - This member is added by an implicit conversion from AbstractNodeQueue[T] toEnsuring[AbstractNodeQueue[T]] performed by method Ensuring in scala.Predef.
 - Definition Classes
 - Ensuring
 
 -    def ensuring(cond: (AbstractNodeQueue[T]) => Boolean): AbstractNodeQueue[T]
- Implicit
 - This member is added by an implicit conversion from AbstractNodeQueue[T] toEnsuring[AbstractNodeQueue[T]] performed by method Ensuring in scala.Predef.
 - Definition Classes
 - Ensuring
 
 -    def ensuring(cond: Boolean, msg: => Any): AbstractNodeQueue[T]
- Implicit
 - This member is added by an implicit conversion from AbstractNodeQueue[T] toEnsuring[AbstractNodeQueue[T]] performed by method Ensuring in scala.Predef.
 - Definition Classes
 - Ensuring
 
 -    def ensuring(cond: Boolean): AbstractNodeQueue[T]
- Implicit
 - This member is added by an implicit conversion from AbstractNodeQueue[T] toEnsuring[AbstractNodeQueue[T]] performed by method Ensuring in scala.Predef.
 - Definition Classes
 - Ensuring
 
 -   final  def eq(arg0: AnyRef): Boolean
- Definition Classes
 - AnyRef
 
 -    def equals(arg0: AnyRef): Boolean
- Definition Classes
 - AnyRef → Any
 
 -   final  def get(): Node[T]
- Definition Classes
 - AtomicReference
 
 -   final  def getAcquire(): Node[T]
- Definition Classes
 - AtomicReference
 
 -   final  def getAndAccumulate(arg0: Node[T], arg1: BinaryOperator[Node[T]]): Node[T]
- Definition Classes
 - AtomicReference
 
 -   final  def getAndSet(arg0: Node[T]): Node[T]
- Definition Classes
 - AtomicReference
 
 -   final  def getAndUpdate(arg0: UnaryOperator[Node[T]]): Node[T]
- Definition Classes
 - AtomicReference
 
 -   final  def getClass(): Class[_ <: AnyRef]
- Definition Classes
 - AnyRef → Any
 - Annotations
 - @HotSpotIntrinsicCandidate() @native()
 
 -   final  def getOpaque(): Node[T]
- Definition Classes
 - AtomicReference
 
 -   final  def getPlain(): Node[T]
- Definition Classes
 - AtomicReference
 
 -    def hashCode(): Int
- Definition Classes
 - AnyRef → Any
 - Annotations
 - @HotSpotIntrinsicCandidate() @native()
 
 -   final  def isEmpty(): Boolean
Query the queue whether it is empty right now.
Query the queue whether it is empty right now.
This method can be used from any thread.
- returns
 true if queue was empty at some point in the past
 -   final  def isInstanceOf[T0]: Boolean
- Definition Classes
 - Any
 
 -   final  def lazySet(arg0: Node[T]): Unit
- Definition Classes
 - AtomicReference
 
 -   final  def ne(arg0: AnyRef): Boolean
- Definition Classes
 - AnyRef
 
 -   final  def notify(): Unit
- Definition Classes
 - AnyRef
 - Annotations
 - @HotSpotIntrinsicCandidate() @native()
 
 -   final  def notifyAll(): Unit
- Definition Classes
 - AnyRef
 - Annotations
 - @HotSpotIntrinsicCandidate() @native()
 
 -   final  def peek(): T
Query the queue tail for the next element without dequeuing it.
Query the queue tail for the next element without dequeuing it.
Use this method only from the consumer thread!
- returns
 element if there was one, or null if there was none
 -   final  def peekNode(): Node[T]
Query the queue tail for the next element without dequeuing it.
Query the queue tail for the next element without dequeuing it.
Use this method only from the consumer thread!
!!! There is a copy of this code in pollNode() !!!
- returns
 queue node with element inside if there was one, or null if there was none
- Attributes
 - protected[dispatch]
 - Annotations
 - @SuppressWarnings()
 
 -   final  def poll(): T
Pull one item from the queue’s tail if there is one.
Pull one item from the queue’s tail if there is one.
Use this method only from the consumer thread!
- returns
 element if there was one, or null if there was none
 -   final  def pollNode(): Node[T]
Pull one item from the queue, returning it within a queue node.
Pull one item from the queue, returning it within a queue node.
Use this method only from the consumer thread!
- returns
 queue node with element inside if there was one, or null if there was none
- Annotations
 - @SuppressWarnings()
 
 -   final  def set(arg0: Node[T]): Unit
- Definition Classes
 - AtomicReference
 
 -   final  def setOpaque(arg0: Node[T]): Unit
- Definition Classes
 - AtomicReference
 
 -   final  def setPlain(arg0: Node[T]): Unit
- Definition Classes
 - AtomicReference
 
 -   final  def setRelease(arg0: Node[T]): Unit
- Definition Classes
 - AtomicReference
 
 -   final  def synchronized[T0](arg0: => T0): T0
- Definition Classes
 - AnyRef
 
 -    def toString(): String
- Definition Classes
 - AtomicReference → AnyRef → Any
 
 -   final  def updateAndGet(arg0: UnaryOperator[Node[T]]): Node[T]
- Definition Classes
 - AtomicReference
 
 -   final  def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
 - AnyRef
 - Annotations
 - @throws(classOf[java.lang.InterruptedException])
 
 -   final  def wait(arg0: Long): Unit
- Definition Classes
 - AnyRef
 - Annotations
 - @throws(classOf[java.lang.InterruptedException]) @native()
 
 -   final  def wait(): Unit
- Definition Classes
 - AnyRef
 - Annotations
 - @throws(classOf[java.lang.InterruptedException])
 
 -   final  def weakCompareAndSetAcquire(arg0: Node[T], arg1: Node[T]): Boolean
- Definition Classes
 - AtomicReference
 
 -   final  def weakCompareAndSetPlain(arg0: Node[T], arg1: Node[T]): Boolean
- Definition Classes
 - AtomicReference
 
 -   final  def weakCompareAndSetRelease(arg0: Node[T], arg1: Node[T]): Boolean
- Definition Classes
 - AtomicReference
 
 -   final  def weakCompareAndSetVolatile(arg0: Node[T], arg1: Node[T]): Boolean
- Definition Classes
 - AtomicReference
 
 
Deprecated Value Members
-    def finalize(): Unit
- Attributes
 - protected[lang]
 - Definition Classes
 - AnyRef
 - Annotations
 - @throws(classOf[java.lang.Throwable]) @Deprecated
 - Deprecated
 (Since version 9)
 -    def formatted(fmtstr: String): String
- Implicit
 - This member is added by an implicit conversion from AbstractNodeQueue[T] toStringFormat[AbstractNodeQueue[T]] performed by method StringFormat in scala.Predef.
 - Definition Classes
 - StringFormat
 - Annotations
 - @deprecated @inline()
 - Deprecated
 (Since version 2.12.16) Use
formatString.format(value)instead ofvalue.formatted(formatString), or use thef""string interpolator. In Java 15 and later,formattedresolves to the new method in String which has reversed parameters.
 -   final  def weakCompareAndSet(arg0: Node[T], arg1: Node[T]): Boolean
- Definition Classes
 - AtomicReference
 - Annotations
 - @Deprecated
 - Deprecated
 (Since version 9)
 -    def →[B](y: B): (AbstractNodeQueue[T], B)
- Implicit
 - This member is added by an implicit conversion from AbstractNodeQueue[T] toArrowAssoc[AbstractNodeQueue[T]] performed by method ArrowAssoc in scala.Predef.
 - Definition Classes
 - ArrowAssoc
 - Annotations
 - @deprecated
 - Deprecated
 (Since version 2.13.0) Use
->instead. If you still wish to display it as one character, consider using a font with programming ligatures such as Fira Code.