Очередь - важный аспект любого языка программирования. Особенно если говорить о . В этой статье мы обсудим интерфейс BlockingQueue в Java в следующем порядке:
- Что такое интерфейс BlockingQueue в Java?
- Типы BlockingQueue
- Методы в интерфейсе BlockingQueue
- Интерфейс BlockingQueue в Java Пример: служба
Что такое интерфейс BlockingQueue в Java?
Интерфейс BlockingQueue в Java - это очередь, которая блокируется, когда вы пытаетесь исключить из нее очередь, а очередь пуста, или если вы пытаетесь поставить в нее элементы, а очередь уже заполнена. Поток, пытающийся выйти из пустой очереди, блокируется до тех пор, пока какой-либо другой поток не вставит элемент в очередь. Поток, пытающийся поставить элемент в полную очередь, блокируется до тех пор, пока какой-либо другой поток не освободит место в очереди, либо удалив один или несколько элементов из очереди, либо полностью очистив очередь.
Интерфейс 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», и мы свяжемся с вами в ближайшее время.