blocking queue has the following characteristics:
- methods to add an item to the queue, waiting for space to become available in the queue if necessary;
- corresponding methods that take an item from the queue, waiting for an item to put in the queue if it is empty;
- optional time limits and interruptibility on the latter calls;
- efficient thread-safety: blocking queues are specifically designed to have their put() method called from one thread and the take() method from another— in particular, items posted to the queue will be published correctly to any other thread taking the item from the queue again; significantly, the implementations generally achieve this without locking the entire queue, making them highly concurrent components;
- integration with Java thread pools: a flavour of blocking queue can be passed into the constructor of ThreadPoolExecutor to customise the behaviour of the thread pool.
These features make
BlockingQueues useful for cases such as the following:
- a server, where incoming connections are placed on a queue, and a pool of threads picks them up as those threads become free;
- in a variety of parallel processes, where we want to manage or limit resource usage at different stages of the process.
No comments:
Post a Comment