Class Queues
- java.lang.Object
-
- com.google.common.collect.Queues
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static <E> intdrain(java.util.concurrent.BlockingQueue<E> q, java.util.Collection<? super E> buffer, int numElements, long timeout, java.util.concurrent.TimeUnit unit)Drains the queue asBlockingQueue.drainTo(Collection, int), but if the requestednumElementselements are not available, it will wait for them up to the specified timeout.static <E> intdrain(java.util.concurrent.BlockingQueue<E> q, java.util.Collection<? super E> buffer, int numElements, java.time.Duration timeout)Drains the queue asBlockingQueue.drainTo(Collection, int), but if the requestednumElementselements are not available, it will wait for them up to the specified timeout.static <E> intdrainUninterruptibly(java.util.concurrent.BlockingQueue<E> q, java.util.Collection<? super E> buffer, int numElements, long timeout, java.util.concurrent.TimeUnit unit)Drains the queue as drain(BlockingQueue, Collection, int, long, TimeUnit), but with a different behavior in case it is interrupted while waiting.static <E> intdrainUninterruptibly(java.util.concurrent.BlockingQueue<E> q, java.util.Collection<? super E> buffer, int numElements, java.time.Duration timeout)Drains the queue as drain(BlockingQueue, Collection, int, Duration), but with a different behavior in case it is interrupted while waiting.static <E> java.util.concurrent.ArrayBlockingQueue<E>newArrayBlockingQueue(int capacity)Creates an emptyArrayBlockingQueuewith the given (fixed) capacity and nonfair access policy.static <E> java.util.ArrayDeque<E>newArrayDeque()Creates an emptyArrayDeque.static <E> java.util.ArrayDeque<E>newArrayDeque(java.lang.Iterable<? extends E> elements)Creates anArrayDequecontaining the elements of the specified iterable, in the order they are returned by the iterable's iterator.static <E> java.util.concurrent.ConcurrentLinkedQueue<E>newConcurrentLinkedQueue()Creates an emptyConcurrentLinkedQueue.static <E> java.util.concurrent.ConcurrentLinkedQueue<E>newConcurrentLinkedQueue(java.lang.Iterable<? extends E> elements)Creates aConcurrentLinkedQueuecontaining the elements of the specified iterable, in the order they are returned by the iterable's iterator.static <E> java.util.concurrent.LinkedBlockingDeque<E>newLinkedBlockingDeque()Creates an emptyLinkedBlockingDequewith a capacity ofInteger.MAX_VALUE.static <E> java.util.concurrent.LinkedBlockingDeque<E>newLinkedBlockingDeque(int capacity)Creates an emptyLinkedBlockingDequewith the given (fixed) capacity.static <E> java.util.concurrent.LinkedBlockingDeque<E>newLinkedBlockingDeque(java.lang.Iterable<? extends E> elements)Creates aLinkedBlockingDequewith a capacity ofInteger.MAX_VALUE, containing the elements of the specified iterable, in the order they are returned by the iterable's iterator.static <E> java.util.concurrent.LinkedBlockingQueue<E>newLinkedBlockingQueue()Creates an emptyLinkedBlockingQueuewith a capacity ofInteger.MAX_VALUE.static <E> java.util.concurrent.LinkedBlockingQueue<E>newLinkedBlockingQueue(int capacity)Creates an emptyLinkedBlockingQueuewith the given (fixed) capacity.static <E> java.util.concurrent.LinkedBlockingQueue<E>newLinkedBlockingQueue(java.lang.Iterable<? extends E> elements)Creates aLinkedBlockingQueuewith a capacity ofInteger.MAX_VALUE, containing the elements of the specified iterable, in the order they are returned by the iterable's iterator.static <E extends java.lang.Comparable>
java.util.concurrent.PriorityBlockingQueue<E>newPriorityBlockingQueue()Creates an emptyPriorityBlockingQueuewith the ordering given by its elements' natural ordering.static <E extends java.lang.Comparable>
java.util.concurrent.PriorityBlockingQueue<E>newPriorityBlockingQueue(java.lang.Iterable<? extends E> elements)Creates aPriorityBlockingQueuecontaining the given elements.static <E extends java.lang.Comparable>
java.util.PriorityQueue<E>newPriorityQueue()Creates an emptyPriorityQueuewith the ordering given by its elements' natural ordering.static <E extends java.lang.Comparable>
java.util.PriorityQueue<E>newPriorityQueue(java.lang.Iterable<? extends E> elements)Creates aPriorityQueuecontaining the given elements.static <E> java.util.concurrent.SynchronousQueue<E>newSynchronousQueue()Creates an emptySynchronousQueuewith nonfair access policy.static <E extends @Nullable java.lang.Object>
java.util.Deque<E>synchronizedDeque(java.util.Deque<E> deque)Returns a synchronized (thread-safe) deque backed by the specified deque.static <E extends @Nullable java.lang.Object>
java.util.Queue<E>synchronizedQueue(java.util.Queue<E> queue)Returns a synchronized (thread-safe) queue backed by the specified queue.
-
-
-
Method Detail
-
newArrayBlockingQueue
@GwtIncompatible public static <E> java.util.concurrent.ArrayBlockingQueue<E> newArrayBlockingQueue(int capacity)
Creates an emptyArrayBlockingQueuewith the given (fixed) capacity and nonfair access policy.
-
newArrayDeque
public static <E> java.util.ArrayDeque<E> newArrayDeque()
Creates an emptyArrayDeque.- Since:
- 12.0
-
newArrayDeque
public static <E> java.util.ArrayDeque<E> newArrayDeque(java.lang.Iterable<? extends E> elements)
Creates anArrayDequecontaining the elements of the specified iterable, in the order they are returned by the iterable's iterator.- Since:
- 12.0
-
newConcurrentLinkedQueue
@GwtIncompatible public static <E> java.util.concurrent.ConcurrentLinkedQueue<E> newConcurrentLinkedQueue()
Creates an emptyConcurrentLinkedQueue.
-
newConcurrentLinkedQueue
@GwtIncompatible public static <E> java.util.concurrent.ConcurrentLinkedQueue<E> newConcurrentLinkedQueue(java.lang.Iterable<? extends E> elements)
Creates aConcurrentLinkedQueuecontaining the elements of the specified iterable, in the order they are returned by the iterable's iterator.
-
newLinkedBlockingDeque
@GwtIncompatible public static <E> java.util.concurrent.LinkedBlockingDeque<E> newLinkedBlockingDeque()
Creates an emptyLinkedBlockingDequewith a capacity ofInteger.MAX_VALUE.- Since:
- 12.0
-
newLinkedBlockingDeque
@GwtIncompatible public static <E> java.util.concurrent.LinkedBlockingDeque<E> newLinkedBlockingDeque(int capacity)
Creates an emptyLinkedBlockingDequewith the given (fixed) capacity.- Throws:
java.lang.IllegalArgumentException- ifcapacityis less than 1- Since:
- 12.0
-
newLinkedBlockingDeque
@GwtIncompatible public static <E> java.util.concurrent.LinkedBlockingDeque<E> newLinkedBlockingDeque(java.lang.Iterable<? extends E> elements)
Creates aLinkedBlockingDequewith a capacity ofInteger.MAX_VALUE, containing the elements of the specified iterable, in the order they are returned by the iterable's iterator.- Since:
- 12.0
-
newLinkedBlockingQueue
@GwtIncompatible public static <E> java.util.concurrent.LinkedBlockingQueue<E> newLinkedBlockingQueue()
Creates an emptyLinkedBlockingQueuewith a capacity ofInteger.MAX_VALUE.
-
newLinkedBlockingQueue
@GwtIncompatible public static <E> java.util.concurrent.LinkedBlockingQueue<E> newLinkedBlockingQueue(int capacity)
Creates an emptyLinkedBlockingQueuewith the given (fixed) capacity.- Throws:
java.lang.IllegalArgumentException- ifcapacityis less than 1
-
newLinkedBlockingQueue
@GwtIncompatible public static <E> java.util.concurrent.LinkedBlockingQueue<E> newLinkedBlockingQueue(java.lang.Iterable<? extends E> elements)
Creates aLinkedBlockingQueuewith a capacity ofInteger.MAX_VALUE, containing the elements of the specified iterable, in the order they are returned by the iterable's iterator.- Parameters:
elements- the elements that the queue should contain, in order- Returns:
- a new
LinkedBlockingQueuecontaining those elements
-
newPriorityBlockingQueue
@GwtIncompatible public static <E extends java.lang.Comparable> java.util.concurrent.PriorityBlockingQueue<E> newPriorityBlockingQueue()
Creates an emptyPriorityBlockingQueuewith the ordering given by its elements' natural ordering.- Since:
- 11.0 (but the bound of
Ewas changed fromObjecttoComparablein 15.0)
-
newPriorityBlockingQueue
@GwtIncompatible public static <E extends java.lang.Comparable> java.util.concurrent.PriorityBlockingQueue<E> newPriorityBlockingQueue(java.lang.Iterable<? extends E> elements)
Creates aPriorityBlockingQueuecontaining the given elements.Note: If the specified iterable is a
SortedSetor aPriorityQueue, this priority queue will be ordered according to the same ordering.- Since:
- 11.0 (but the bound of
Ewas changed fromObjecttoComparablein 15.0)
-
newPriorityQueue
public static <E extends java.lang.Comparable> java.util.PriorityQueue<E> newPriorityQueue()
Creates an emptyPriorityQueuewith the ordering given by its elements' natural ordering.- Since:
- 11.0 (but the bound of
Ewas changed fromObjecttoComparablein 15.0)
-
newPriorityQueue
public static <E extends java.lang.Comparable> java.util.PriorityQueue<E> newPriorityQueue(java.lang.Iterable<? extends E> elements)
Creates aPriorityQueuecontaining the given elements.Note: If the specified iterable is a
SortedSetor aPriorityQueue, this priority queue will be ordered according to the same ordering.- Since:
- 11.0 (but the bound of
Ewas changed fromObjecttoComparablein 15.0)
-
newSynchronousQueue
@GwtIncompatible public static <E> java.util.concurrent.SynchronousQueue<E> newSynchronousQueue()
Creates an emptySynchronousQueuewith nonfair access policy.
-
drain
@CanIgnoreReturnValue @GwtIncompatible public static <E> int drain(java.util.concurrent.BlockingQueue<E> q, java.util.Collection<? super E> buffer, int numElements, java.time.Duration timeout) throws java.lang.InterruptedException
Drains the queue asBlockingQueue.drainTo(Collection, int), but if the requestednumElementselements are not available, it will wait for them up to the specified timeout.- Parameters:
q- the blocking queue to be drainedbuffer- where to add the transferred elementsnumElements- the number of elements to be waited fortimeout- how long to wait before giving up- Returns:
- the number of elements transferred
- Throws:
java.lang.InterruptedException- if interrupted while waiting- Since:
- 28.0
-
drain
@CanIgnoreReturnValue @GwtIncompatible public static <E> int drain(java.util.concurrent.BlockingQueue<E> q, java.util.Collection<? super E> buffer, int numElements, long timeout, java.util.concurrent.TimeUnit unit) throws java.lang.InterruptedException
Drains the queue asBlockingQueue.drainTo(Collection, int), but if the requestednumElementselements are not available, it will wait for them up to the specified timeout.- Parameters:
q- the blocking queue to be drainedbuffer- where to add the transferred elementsnumElements- the number of elements to be waited fortimeout- how long to wait before giving up, in units ofunitunit- aTimeUnitdetermining how to interpret the timeout parameter- Returns:
- the number of elements transferred
- Throws:
java.lang.InterruptedException- if interrupted while waiting
-
drainUninterruptibly
@CanIgnoreReturnValue @GwtIncompatible public static <E> int drainUninterruptibly(java.util.concurrent.BlockingQueue<E> q, java.util.Collection<? super E> buffer, int numElements, java.time.Duration timeout)
Drains the queue as drain(BlockingQueue, Collection, int, Duration), but with a different behavior in case it is interrupted while waiting. In that case, the operation will continue as usual, and in the end the thread's interruption status will be set (noInterruptedExceptionis thrown).- Parameters:
q- the blocking queue to be drainedbuffer- where to add the transferred elementsnumElements- the number of elements to be waited fortimeout- how long to wait before giving up- Returns:
- the number of elements transferred
- Since:
- 28.0
-
drainUninterruptibly
@CanIgnoreReturnValue @GwtIncompatible public static <E> int drainUninterruptibly(java.util.concurrent.BlockingQueue<E> q, java.util.Collection<? super E> buffer, int numElements, long timeout, java.util.concurrent.TimeUnit unit)
Drains the queue as drain(BlockingQueue, Collection, int, long, TimeUnit), but with a different behavior in case it is interrupted while waiting. In that case, the operation will continue as usual, and in the end the thread's interruption status will be set (noInterruptedExceptionis thrown).- Parameters:
q- the blocking queue to be drainedbuffer- where to add the transferred elementsnumElements- the number of elements to be waited fortimeout- how long to wait before giving up, in units ofunitunit- aTimeUnitdetermining how to interpret the timeout parameter- Returns:
- the number of elements transferred
-
synchronizedQueue
public static <E extends @Nullable java.lang.Object> java.util.Queue<E> synchronizedQueue(java.util.Queue<E> queue)
Returns a synchronized (thread-safe) queue backed by the specified queue. In order to guarantee serial access, it is critical that all access to the backing queue is accomplished through the returned queue.It is imperative that the user manually synchronize on the returned queue when accessing the queue's iterator:
Queue<E> queue = Queues.synchronizedQueue(MinMaxPriorityQueue.<E>create()); ... queue.add(element); // Needn't be in synchronized block ... synchronized (queue) { // Must synchronize on queue! Iterator<E> i = queue.iterator(); // Must be in synchronized block while (i.hasNext()) { foo(i.next()); } }Failure to follow this advice may result in non-deterministic behavior.
The returned queue will be serializable if the specified queue is serializable.
- Parameters:
queue- the queue to be wrapped in a synchronized view- Returns:
- a synchronized view of the specified queue
- Since:
- 14.0
-
synchronizedDeque
public static <E extends @Nullable java.lang.Object> java.util.Deque<E> synchronizedDeque(java.util.Deque<E> deque)
Returns a synchronized (thread-safe) deque backed by the specified deque. In order to guarantee serial access, it is critical that all access to the backing deque is accomplished through the returned deque.It is imperative that the user manually synchronize on the returned deque when accessing any of the deque's iterators:
Deque<E> deque = Queues.synchronizedDeque(Queues.<E>newArrayDeque()); ... deque.add(element); // Needn't be in synchronized block ... synchronized (deque) { // Must synchronize on deque! Iterator<E> i = deque.iterator(); // Must be in synchronized block while (i.hasNext()) { foo(i.next()); } }Failure to follow this advice may result in non-deterministic behavior.
The returned deque will be serializable if the specified deque is serializable.
- Parameters:
deque- the deque to be wrapped in a synchronized view- Returns:
- a synchronized view of the specified deque
- Since:
- 15.0
-
-