Java provides a thread-safe queue (First In First Out (FIFO)) backed by an array via ArrayBlockingQueue. The following table lists the single-thread and multithreaded Java built-in queues backed by an array:
Single thread |
Multithreaded |
ArrayDeque PriorityQueue (sorted retrievals) |
ArrayBlockingQueue (bounded) ConcurrentLinkedQueue (unbounded) ConcurrentLinkedDeque (unbounded) LinkedBlockingQueue (optionally bounded) LinkedBlockingDeque (optionally bounded) LinkedTransferQueue PriorityBlockingQueue SynchronousQueue DelayQueue Stack |
The capacity of ArrayBlockingQueue cannot be changed following creation. Attempts to put an element into a full queue will result in the operation blocking; attempts to take an element from an empty queue will similarly block.
Creating ArrayBlockingQueue can easily be done as follows:
BlockingQueue<Integer> queue = new ArrayBlockingQueue<>(QUEUE_MAX_SIZE);