logo search
Хабибуллин

Интерфейс BlockingQueue

Интерфейс BlockingQueue из пакета java.util.concurrent, расширяющий интерфейс Queue,

описывает очередь, с которой работают одновременно несколько подпроцессов, вставляющих и удаляющих элементы. Их работа организуется таким образом, чтобы подпроцесс, пытающийся забрать элемент из пустой очереди, ждал, когда другой подпроцесс занесет в нее хотя бы один элемент. Подпроцесс, ставящий элемент в очередь, ждет, когда для него освободится место, если очередь уже переполнена.

Для организации такой совместной работы добавлены следующие методы:

Object take() — возвращает и удаляет первый элемент, ожидая поступления элемента, если очередь пуста;

void put(Object element) — ставит элемент element в очередь, ожидая уменьшения очереди, если она переполнена;

int drainTo(Collection coll, int num) — удаляет по крайней мере num элементов из

очереди, переписывая их в коллекцию coll, и возвращает их фактическое количество;

int drainTo(Collection coll) — удаляет все доступные элементы из очереди, переписывая их в коллекцию coll и возвращая их количество.