BlockingQueue was introduced in Java 1.5. It extends Queue
interface in Java.
BlockingQueue supports operations that wait for the queue to
become non-empty when retrieving an element. Also it supports the
operations that wait for space to become available in the queue
while storing an element.
Some of the features of BlockingQueue are:
It does not accept null elements.
Its main use is in producer-consumer problems.
BlockingQueue implementation is thread-safe.
It can be used in inter-thread communications.
It does not support any kind of "close" or "shutdown"
operation to indicate that no more items will be added
https://www.digitalocean.com/community/tutorials/java-blockingqueue-example