Class ForwardingBlockingDeque<E>

  • All Implemented Interfaces:
    java.lang.Iterable<E>, java.util.Collection<E>, java.util.concurrent.BlockingDeque<E>, java.util.concurrent.BlockingQueue<E>, java.util.Deque<E>, java.util.Queue<E>

    @GwtIncompatible
    public abstract class ForwardingBlockingDeque<E>
    extends ForwardingDeque<E>
    implements java.util.concurrent.BlockingDeque<E>
    A BlockingDeque which forwards all its method calls to another BlockingDeque. Subclasses should override one or more methods to modify the behavior of the backing deque as desired per the decorator pattern.

    Warning: The methods of ForwardingBlockingDeque forward indiscriminately to the methods of the delegate. For example, overriding ForwardingCollection.add(E) alone will not change the behaviour of offer(E, long, java.util.concurrent.TimeUnit) which can lead to unexpected behaviour. In this case, you should override offer as well, either providing your own implementation, or delegating to the provided standardOffer method.

    default method warning: This class does not forward calls to default methods. Instead, it inherits their default implementations. When those implementations invoke methods, they invoke methods on the ForwardingBlockingDeque.

    The standard methods are not guaranteed to be thread-safe, even when all of the methods that they depend on are thread-safe.

    Since:
    21.0 (since 14.0 as ForwardingBlockingDeque)
    Author:
    Emily Soldal
    • Method Detail

      • delegate

        protected abstract java.util.concurrent.BlockingDeque<Edelegate()
        Description copied from class: ForwardingObject
        Returns the backing delegate instance that methods are forwarded to. Abstract subclasses generally override this method with an abstract method that has a more specific return type, such as ForwardingSet.delegate(). Concrete subclasses override this method to supply the instance being decorated.
        Specified by:
        delegate in class ForwardingDeque<E>
      • remainingCapacity

        public int remainingCapacity()
        Specified by:
        remainingCapacity in interface java.util.concurrent.BlockingQueue<E>
      • putFirst

        public void putFirst​(E e)
                      throws java.lang.InterruptedException
        Specified by:
        putFirst in interface java.util.concurrent.BlockingDeque<E>
        Throws:
        java.lang.InterruptedException
      • putLast

        public void putLast​(E e)
                     throws java.lang.InterruptedException
        Specified by:
        putLast in interface java.util.concurrent.BlockingDeque<E>
        Throws:
        java.lang.InterruptedException
      • offerFirst

        public boolean offerFirst​(E e,
                                  long timeout,
                                  java.util.concurrent.TimeUnit unit)
                           throws java.lang.InterruptedException
        Specified by:
        offerFirst in interface java.util.concurrent.BlockingDeque<E>
        Throws:
        java.lang.InterruptedException
      • offerLast

        public boolean offerLast​(E e,
                                 long timeout,
                                 java.util.concurrent.TimeUnit unit)
                          throws java.lang.InterruptedException
        Specified by:
        offerLast in interface java.util.concurrent.BlockingDeque<E>
        Throws:
        java.lang.InterruptedException
      • takeFirst

        public E takeFirst()
                    throws java.lang.InterruptedException
        Specified by:
        takeFirst in interface java.util.concurrent.BlockingDeque<E>
        Throws:
        java.lang.InterruptedException
      • takeLast

        public E takeLast()
                   throws java.lang.InterruptedException
        Specified by:
        takeLast in interface java.util.concurrent.BlockingDeque<E>
        Throws:
        java.lang.InterruptedException
      • pollFirst

        @CheckForNull
        public E pollFirst​(long timeout,
                           java.util.concurrent.TimeUnit unit)
                    throws java.lang.InterruptedException
        Specified by:
        pollFirst in interface java.util.concurrent.BlockingDeque<E>
        Throws:
        java.lang.InterruptedException
      • pollLast

        @CheckForNull
        public E pollLast​(long timeout,
                          java.util.concurrent.TimeUnit unit)
                   throws java.lang.InterruptedException
        Specified by:
        pollLast in interface java.util.concurrent.BlockingDeque<E>
        Throws:
        java.lang.InterruptedException
      • put

        public void put​(E e)
                 throws java.lang.InterruptedException
        Specified by:
        put in interface java.util.concurrent.BlockingDeque<E>
        Specified by:
        put in interface java.util.concurrent.BlockingQueue<E>
        Throws:
        java.lang.InterruptedException
      • offer

        public boolean offer​(E e,
                             long timeout,
                             java.util.concurrent.TimeUnit unit)
                      throws java.lang.InterruptedException
        Specified by:
        offer in interface java.util.concurrent.BlockingDeque<E>
        Specified by:
        offer in interface java.util.concurrent.BlockingQueue<E>
        Throws:
        java.lang.InterruptedException
      • take

        public E take()
               throws java.lang.InterruptedException
        Specified by:
        take in interface java.util.concurrent.BlockingDeque<E>
        Specified by:
        take in interface java.util.concurrent.BlockingQueue<E>
        Throws:
        java.lang.InterruptedException
      • poll

        @CheckForNull
        public E poll​(long timeout,
                      java.util.concurrent.TimeUnit unit)
               throws java.lang.InterruptedException
        Specified by:
        poll in interface java.util.concurrent.BlockingDeque<E>
        Specified by:
        poll in interface java.util.concurrent.BlockingQueue<E>
        Throws:
        java.lang.InterruptedException
      • drainTo

        public int drainTo​(java.util.Collection<? super E> c)
        Specified by:
        drainTo in interface java.util.concurrent.BlockingQueue<E>
      • drainTo

        public int drainTo​(java.util.Collection<? super E> c,
                           int maxElements)
        Specified by:
        drainTo in interface java.util.concurrent.BlockingQueue<E>