BlockingQueue
BlockingQueue is a Queue which supports flow control by introducing blocking (while underflow or overflow) along with storing the elements.
take() method of BlockingQueue will block if Queue is empty and thread trying to dequeue from an empty queue is blocked until some other thread inserts an item into the queue.
put() method of BlockingQueue will block if Queue is full and thread trying to enqueue an item in a full queue is blocked until some other thread makes space in the queue.
BlockingQueue |
Implementation of BlockingQueue interface in java.util.concurrent package:
ArrayBlockingQueue
DelayQueue
LinkedBlockingDeque
LinkedBlockingQueue
PriorityBlockingQueue
SynchronousQueue
Operations of Blocking Queue
| Throws exception | Special value | Blocks | Times out |
Insert | add(e) | offer(e) | put(e) | offer(e, time, unit) |
Remove | remove() | poll() | take() | poll(time, unit) |
Examine | element() | peek() | not applicable | not applicable |
Conditions | Queue is empty while removing, or Queue is full while adding element. | null or false | Block the thread until the operation can be accomplished. | Block the thread for a given maximum time limit before giving up. |
No comments:
Post a Comment