Queue implementations are grouped into
general-purpose and concurrent implementations.
LinkedList
implements the Queue interface, providing
first in, first out (FIFO)
queue operations for add, poll, and so on.
The
PriorityQueue class is a priority queue based on the heap data structure.
This queue orders elements according to the order specified at
construction time, which can be the elements' natural ordering or the ordering
imposed by an explicit Comparator.
The queue retrieval operations — poll, remove, peek, and element — access the element at the head of the queue. The head of the queue is the least element with
respect to the specified ordering. If multiple elements are tied
for least value, the head is one of those elements; ties are
broken arbitrarily.
PriorityQueue and its iterator implement all of the
optional methods of the Collection and Iterator
interfaces.  The iterator provided in method iterator
is not guaranteed to traverse the elements of the PriorityQueue
in any particular order. For ordered traversal,
consider using Arrays.sort(pq.toArray()).
java.util.concurrent package contains a set of synchronized
Queue interfaces and classes.
BlockingQueue extends Queue with operations that wait for the queue to become
nonempty when retrieving an element and for space to become
available in the queue when storing an element. This interface is
implemented by the following classes:
LinkedBlockingQueue — an optionally bounded FIFO blocking queue backed by linked nodes
ArrayBlockingQueue — a bounded FIFO blocking queue backed by an array
PriorityBlockingQueue — an unbounded blocking priority queue backed by a heap
DelayQueue — a time-based scheduling queue backed by a heap
SynchronousQueue — a simple rendezvous mechanism that uses the BlockingQueue
interface
In JDK 7,
TransferQueue is a specialized BlockingQueue in which code that adds an element to the
queue has the option of waiting (blocking) for code in another thread to
retrieve the element. TransferQueue has a single implementation:
LinkedTransferQueue — an unbounded TransferQueue based on linked nodes