JavaScript is disabled on your browser.
Skip navigation links
io.reactivex.rxjava3.operators

Class SpscLinkedArrayQueue<T>

  • Type Parameters:
    T - the contained value type
    All Implemented Interfaces:
    SimplePlainQueue<T>, SimpleQueue<T>


    public final class SpscLinkedArrayQueue<T>
    extends Object
    implements SimplePlainQueue<T>
    A single-producer single-consumer array-backed queue which can allocate new arrays in case the consumer is slower than the producer.
    Since:
    3.1.1
    • Constructor Summary

      Constructors
      Constructor and Description
      SpscLinkedArrayQueue (int bufferSize)
      Constructs a linked array-based queue instance with the given island size rounded up to the next power of 2.
    • Method Summary

      All Methods
      Modifier and Type Method and Description
      void clear ()
      Removes all enqueued items from this queue.
      boolean isEmpty ()
      Returns true if the queue is empty.
      boolean offer (T e)
      Atomically enqueue a single value.
      boolean offer (T first, T second)
      Offer two elements at the same time.
      T peek ()
      Returns the next element in this queue without removing it or null if this queue is empty
      T poll ()
      Tries to dequeue a value (non-null) or returns null if the queue is empty.
      int size ()
      Returns the number of elements in the queue.
    • Constructor Detail

      • SpscLinkedArrayQueue

        public SpscLinkedArrayQueue(int bufferSize)
        Constructs a linked array-based queue instance with the given island size rounded up to the next power of 2.
        Parameters:
        bufferSize - the maximum number of elements per island
    • Method Detail

      • offer

        public boolean offer(T e)
        Atomically enqueue a single value.

        This implementation is correct for single producer thread use only.

        Specified by:
        offer in interface SimpleQueue<T>
        Parameters:
        e - the value to enqueue, not null
        Returns:
        true if successful, false if the value was not enqueued likely due to reaching the queue capacity)
      • poll

        @Nullable
        public T poll()
        Tries to dequeue a value (non-null) or returns null if the queue is empty.

        If the producer uses SimpleQueue.offer(Object, Object) and when polling in pairs, if the first poll() returns a non-null item, the second poll() is guaranteed to return a non-null item as well.

        This implementation is correct for single consumer thread use only.

        Specified by:
        poll in interface SimplePlainQueue<T>
        Specified by:
        poll in interface SimpleQueue<T>
        Returns:
        the item or null to indicate an empty queue
      • peek

        @Nullable
        public T peek()
        Returns the next element in this queue without removing it or null if this queue is empty
        Returns:
        the next element or null
      • clear

        public void clear()
        Description copied from interface: SimpleQueue
        Removes all enqueued items from this queue.
        Specified by:
        clear in interface SimpleQueue<T>
      • size

        public int size()
        Returns the number of elements in the queue.
        Returns:
        the number of elements in the queue
      • isEmpty

        public boolean isEmpty()
        Description copied from interface: SimpleQueue
        Returns true if the queue is empty.

        Note however that due to potential fused functions in SimpleQueue.poll() it is possible this method returns false but then poll() returns null because the fused function swallowed the available item(s).

        Specified by:
        isEmpty in interface SimpleQueue<T>
        Returns:
        true if the queue is empty
      • offer

        public boolean offer(T first,
         T second)
        Offer two elements at the same time.

        Don't use the regular offer() with this at all!

        Specified by:
        offer in interface SimpleQueue<T>
        Parameters:
        first - the first value, not null
        second - the second value, not null
        Returns:
        true if the queue accepted the two new values
Skip navigation links

AltStyle によって変換されたページ (->オリジナル) /