BlockingQueue
A thread-safe queue whose put waits while it is full and whose take waits while it is empty.
java.util.concurrent.BlockingQueue (ArrayBlockingQueue with a capacity, LinkedBlockingQueue optionally bounded) connects producer and consumer threads; offer and poll are the non-blocking versions.
See also