Как реализовать интерфейс BlockingQueue в Java



Эта статья предоставит вам подробные и всесторонние знания о том, как реализовать интерфейс BlockingQueue в Java.

Очередь - важный аспект любого языка программирования. Особенно если говорить о . В этой статье мы обсудим интерфейс BlockingQueue в Java в следующем порядке:

Что такое интерфейс BlockingQueue в Java?

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





очередь приоритетов в c ++

Интерфейс BlockingQueue в Java не принимаетзначение NULLценности и броситьИсключение нулевого указателяесли вы попытаетесь сохранить нулевое значение в очереди.Реализации Java BlockingQueue: потокобезопасный . Все методы организации очереди являются атомарными по своей природе и используют внутренние блокировки или другие формы управления параллелизмом.



Диаграмма классов очереди Java

маркер интерфейса в примере java

Интерфейс Java Queue расширяет интерфейс Collection. Интерфейс Collection расширяет интерфейс Iterable. Некоторые из часто используемых классов реализации очереди: LinkedList, PriorityQueue, ArrayBlockingQueue, DelayQueue, LinkedBlockingQueue, PriorityBlockingQueue,и т. д. AbstractQueue предоставляет скелетную реализацию интерфейса Queue для уменьшения усилий при реализации Queue.

Типы BlockingQueue

BlockingQueue бывает двух типов:



  • Неограниченная очередь: Емкость очереди блокировки будет установлена ​​на Integer.MAX_VALUE. В случае неограниченной блокирующей очереди очередь никогда не будет заблокирована, потому что она может вырасти до очень большого размера. когда вы добавляете элементы, он увеличивается в размерах.

Синтаксис:
Очередь блокировки BlockingQueue = новый LinkedBlockingDeque ()

  • Ограниченная очередь: Второй тип очереди - это ограниченная очередь. В случае ограниченной очереди вы можете создать очередь, минуя емкость очереди в конструкторе очередей:
    Синтаксис:
    // Создает блокирующую очередь емкостью 5

BlockingQueue blocking queue = новый LinkedBlockingDeque (5)

Методы в интерфейсе BlockingQueue

Изменить тип Синтаксис метода Используется для Описание
логический добавить (E и) Вставка

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

логический содержит (Объект o) Изучить

Возвращает истину, если эта очередь содержит указанный элемент.

создать экземпляр ec2 из снимка
int DrainTo (Коллекция c) Получение или удаление

Удаляет все доступные элементы из этой очереди и добавляет их в данную коллекцию.

int DrainTo (Коллекция c, int maxElements) Получение или удаление

Удаляет не более указанного количества доступных элементов из этой очереди и добавляет их в данную коллекцию.

логический предложение (E и) Вставка

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

логический предложение (E e, длительный тайм-аут, единица времени) Вставка

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

ЯВЛЯЕТСЯ опрос (длинный таймаут, единица TimeUnit) Получение или удаление

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

пустота положить (E e) Вставка

Вставляет указанный элемент в эту очередь, ожидая, если необходимо, освободится место.

int оставшаяся емкость () Изучить

Возвращает количество дополнительных элементов, которые эта очередь может в идеале (при отсутствии ограничений памяти или ресурсов) принять без блокировки, или Integer.MAX_VALUE, если нет внутреннего ограничения.

логический удалить (Объект o) + Получение или удаление

Удаляет один экземпляр указанного элемента из этой очереди,если он присутствует.

анзибль против марионетки против шеф-повара
ЯВЛЯЕТСЯ взять () Получение или удаление

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

Интерфейс BlockingQueue в Java Пример: служба

package com.journaldev.concurrency import java.util.concurrent.ArrayBlockingQueue import java.util.concurrent.BlockingQueue public class ProducerConsumerService {public static void main (String [] args) {// Создание BlockingQueue размера 10 BlockingQueue queue = new Array 10) Производитель Producer = new Producer (queue) Consumer consumer = new Consumer (queue) // запускающий производитель для создания сообщений в очереди new Thread (продюсер) .start () // запускающий потребитель для получения сообщений из очереди new Thread (потребитель) .start () System.out.println ('Производитель и потребитель запущены')}}

На этом мы подошли к концу статьи об интерфейсе BlockingQueue в Java. Надеюсь, теперь все ваши концепции понятны.

Проверьте от Edureka, надежной компании онлайн-обучения с сетью из более чем 250 000 довольных учащихся по всему миру. Курс обучения и сертификации по Java J2EE и SOA от Edureka предназначен для студентов и профессионалов, которые хотят стать Java-разработчиками. Курс разработан, чтобы дать вам хорошее начало в программировании на Java и обучить вас как основным, так и продвинутым концепциям Java, а также различным средам Java, таким как Hibernate и Spring.

Есть вопрос к нам? Пожалуйста, укажите это в разделе комментариев этого блога «Интерфейс BlockingQueue в Java», и мы свяжемся с вами в ближайшее время.