Class AtomicReferenceArrayQueue<E>

    • Field Detail

      • buffer

        protected final java.util.concurrent.atomic.AtomicReferenceArray<E> buffer
      • mask

        protected final int mask
    • Constructor Detail

      • AtomicReferenceArrayQueue

        public AtomicReferenceArrayQueue​(int capacity)
    • Method Detail

      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.util.AbstractCollection<E>
      • clear

        public void clear()
        Description copied from interface: MessagePassingQueue
        Removes all items from the queue. Called from the consumer thread subject to the restrictions appropriate to the implementation and according to the Collection.clear() interface.
        Specified by:
        clear in interface java.util.Collection<E>
        Specified by:
        clear in interface MessagePassingQueue<E>
        Overrides:
        clear in class java.util.AbstractQueue<E>
      • size

        public final int size()
        This method's accuracy is subject to concurrent modifications happening as the size is estimated and as such is a best effort rather than absolute value. For some implementations this method may be O(n) rather than O(1).

        Specified by:
        size in interface java.util.Collection<E>
        Specified by:
        size in interface MessagePassingQueue<E>
        Specified by:
        size in class java.util.AbstractCollection<E>
        Returns:
        number of messages in the queue, between 0 and Integer.MAX_VALUE but less or equals to capacity (if bounded).
      • isEmpty

        public final boolean isEmpty()
        Description copied from interface: MessagePassingQueue
        This method's accuracy is subject to concurrent modifications happening as the observation is carried out.
        Specified by:
        isEmpty in interface java.util.Collection<E>
        Specified by:
        isEmpty in interface MessagePassingQueue<E>
        Overrides:
        isEmpty in class java.util.AbstractCollection<E>
        Returns:
        true if empty, false otherwise
      • currentProducerIndex

        public final long currentProducerIndex()
        Description copied from interface: QueueProgressIndicators
        This method has no concurrent visibility semantics. The value returned may be negative. Under normal circumstances 2 consecutive calls to this method can offer an idea of progress made by producer threads by subtracting the 2 results though in extreme cases (if producers have progressed by more than 2^64) this may also fail.
        This value will normally indicate number of elements passed into the queue, but may under some circumstances be a derivative of that figure. This method should not be used to derive size or emptiness.
        Specified by:
        currentProducerIndex in interface QueueProgressIndicators
        Returns:
        the current value of the producer progress index
      • currentConsumerIndex

        public final long currentConsumerIndex()
        Description copied from interface: QueueProgressIndicators
        This method has no concurrent visibility semantics. The value returned may be negative. Under normal circumstances 2 consecutive calls to this method can offer an idea of progress made by consumer threads by subtracting the 2 results though in extreme cases (if consumers have progressed by more than 2^64) this may also fail.
        This value will normally indicate number of elements taken out of the queue, but may under some circumstances be a derivative of that figure. This method should not be used to derive size or emptiness.
        Specified by:
        currentConsumerIndex in interface QueueProgressIndicators
        Returns:
        the current value of the consumer progress index
      • iterator

        public final java.util.Iterator<E> iterator()
        Get an iterator for this queue. This method is thread safe.

        The iterator provides a best-effort snapshot of the elements in the queue. The returned iterator is not guaranteed to return elements in queue order, and races with the consumer thread may cause gaps in the sequence of returned elements. Like {link #relaxedPoll}, the iterator may not immediately return newly inserted elements.

        Specified by:
        iterator in interface java.util.Collection<E>
        Specified by:
        iterator in interface java.lang.Iterable<E>
        Specified by:
        iterator in class java.util.AbstractCollection<E>
        Returns:
        The iterator.