Class MultithreadConcurrentQueue<E>

  • All Implemented Interfaces:
    ConcurrentQueue<E>
    Direct Known Subclasses:
    DisruptorBlockingQueue

    public class MultithreadConcurrentQueue<E>
    extends Object
    implements ConcurrentQueue<E>
    This is the disruptor implemented for multiple simultaneous reader and writer threads. This data structure approaches 20-40ns for transfers on fast hardware. This code is optimized and tested using a 64bit HotSpot JVM on an Intel x86-64 environment. Other environments should be carefully tested before using in production. Created by jcairns on 5/29/14.
    • Field Detail

      • size

        protected final int size
    • Constructor Detail

      • MultithreadConcurrentQueue

        public MultithreadConcurrentQueue​(int capacity)
        Construct a blocking queue of the given fixed capacity. Note: actual capacity will be the next power of two larger than capacity.
        Parameters:
        capacity - maximum capacity of this queue
    • Method Detail

      • offer

        public boolean offer​(E e)
        Description copied from interface: ConcurrentQueue
        Add element t to the ring
        Specified by:
        offer in interface ConcurrentQueue<E>
        Parameters:
        e - - element to offer
        Returns:
        boolean - true if the operation succeeded
      • poll

        public E poll()
        Description copied from interface: ConcurrentQueue
        remove the first element from the queue and return it
        Specified by:
        poll in interface ConcurrentQueue<E>
        Returns:
        T
      • peek

        public final E peek()
        Description copied from interface: ConcurrentQueue
        return the first element in the queue
        Specified by:
        peek in interface ConcurrentQueue<E>
        Returns:
        E - The element
      • remove

        public int remove​(E[] e)
        Description copied from interface: ConcurrentQueue
        return all elements in the queue to the provided array, up to the size of the provided array.
        Specified by:
        remove in interface ConcurrentQueue<E>
        Parameters:
        e - - The element array
        Returns:
        int - the number of elements added to t
      • size

        public final int size()
        This implemention is known to be broken if preemption were to occur after reading the tail pointer. Code should not depend on size for a correct result.
        Specified by:
        size in interface ConcurrentQueue<E>
        Returns:
        int - possibly the size, or possibly any value less than capacity()
      • capacity

        public int capacity()
        Specified by:
        capacity in interface ConcurrentQueue<E>
        Returns:
        int - the capacity of the queue
      • isEmpty

        public final boolean isEmpty()
        Specified by:
        isEmpty in interface ConcurrentQueue<E>
        Returns:
        boolean - true if the queue is currently empty
      • contains

        public final boolean contains​(Object o)
        Specified by:
        contains in interface ConcurrentQueue<E>
        Parameters:
        o - - the object to test
        Returns:
        boolean - true if specified object is contained in the queue