Java ArrayBlockingQueue
Очередь блокировки массива Java
В этом руководстве мы узнаем о классе ArrayBlockingQueue и его методах с помощью примеров.
04
Класс платформы Java Collections обеспечивает реализацию очереди блокировки с использованием массива.
Он реализует интерфейс Java BlockingQueue.
<час>
Создание ArrayBlockingQueue
Чтобы создать очередь блокировки массива, мы должны импортировать 16
пакет.
Как только мы импортируем пакет, вот как мы можем создать очередь блокировки массива в Java:
01
Здесь
- Тип - тип очереди блокировки массива
- емкость - размер очереди блокировки массива
Например,
10пре>Примечание. Обязательно указать размер массива.
<час>Методы ArrayBlockingQueue
29
класс обеспечивает реализацию всех методов в36
интерфейс.Эти методы используются для вставки, доступа и удаления элементов из очередей блокировки массива.
Также мы узнаем о двух методах
49
и56
которые поддерживают операцию блокировки в очереди блокировки массива.Эти два метода отличают очередь блокировки массива от других типичных очередей.
<час>Вставить элементы
67
- Вставляет указанный элемент в очередь блокировки массива. Выдает исключение, если очередь заполнена.72
- Вставляет указанный элемент в очередь блокировки массива. Он возвращает80
если очередь заполнена.
Например,
28
Вывод
32<час>
Доступ к элементам
99
- Возвращает элемент из начала очереди блокировки массива. Он возвращает108
если очередь пуста.112
- Возвращает объект итератора для последовательного доступа к элементам из очереди блокировки массива. Выдает исключение, если очередь пуста. Мы должны импортировать121
пакет для его использования.
Например,
40
Вывод
58<час>
Удалить элементы
135
- Возвращает и удаляет указанный элемент из очереди блокировки массива. Выдает исключение, если очередь пуста.140
- Возвращает и удаляет указанный элемент из очереди блокировки массива. Он возвращает154
если очередь пуста.165
- Удаляет все элементы из очереди блокировки массива.
Например,
61
Вывод
73<час>
метод put() и take()
В многопоточных процессах мы можем использовать 175
и 187
блокировать работу одного потока, чтобы синхронизировать его с другим потоком. Эти методы будут ждать, пока их можно будет успешно выполнить.
метод put()
Чтобы добавить элемент в конец очереди блокировки массива, мы можем использовать 198
метод.
Если очередь блокировки массива заполнена, он ожидает, пока в очереди блокировки массива не появится место для добавления элемента.
Например,
80
Вывод
99
Здесь 200
метод может вызвать ошибку 214
если он прерывается во время ожидания. Следовательно, мы должны заключить его в try..catch. блокировать.
метод take()
Чтобы вернуть и удалить элемент из начала очереди блокировки массива, мы можем использовать 225
метод.
Если очередь блокировки массива пуста, он ожидает, пока в очереди блокировки массива не появятся элементы для удаления.
Например,
107
Вывод
114
Здесь 237
метод выдаст 248
если он прерывается во время ожидания. Следовательно, мы должны заключить его в 257
блокировать.
Другие методы
Методы | Описания |
---|---|
263 | Ищет указанный элемент в очереди блокировки массива.276 , если нет, возвращает 280 . |
294 | Возвращает длину очереди блокировки массива. |
307 | Преобразует очередь блокировки массива в массив и возвращает его. |
316 | Преобразует очередь блокировки массива в строку |
Зачем использовать ArrayBlockingQueue?
324
использует массивы в качестве внутреннего хранилища.
Он считается поточно-ориентированным. коллекция. Следовательно, он обычно используется в многопоточных приложениях.
Предположим, один поток вставляет элементы в очередь, а другой поток удаляет элементы из очереди.
Теперь, если первый поток медленнее второго, то очередь блокировки массива может заставить второй поток ждать, пока первый поток не завершит свои операции.
java