Java LinkedBlockingQueue
Java LinkedBlockingQueue
В этом руководстве мы узнаем о классе LinkedBLockingQueue и его методах с помощью примеров.
00
класс Java 13
Framework обеспечивает реализацию очереди блокировки с использованием связанного списка.
Он реализует интерфейс Java BlockingQueue.
<час>
Создание LinkedBlockingQueue
Чтобы создать связанную очередь блокировки, мы должны импортировать 29
пакет.
Вот как мы можем создать связанную очередь блокировки в Java:
<сильный>1. Без начальной емкости
04
Здесь начальная емкость по умолчанию будет 2 31 . -1.
<сильный>2. При начальной емкости
14
Здесь
- Тип - тип связанной очереди блокировки
- емкость - размер связанной очереди блокировки
Например,
21
Примечание. Необязательно указывать размер связанного списка.
<час>Методы LinkedBlockingQueue
32
Класс обеспечивает реализацию всех методов интерфейса BlockingQueue.
Эти методы используются для вставки, доступа и удаления элементов из связанных очередей блокировки.
Также мы узнаем о двух методах 40
и 50
которые поддерживают операцию блокировки в связанной очереди блокировки.
Эти два метода отличают связанную очередь блокировки от других обычных очередей.
<час>Вставить элементы
65
- Вставляет указанный элемент в связанную очередь блокировки. Выдает исключение, если очередь заполнена.73
- Вставляет указанный элемент в связанную очередь блокировки. Он возвращает83
если очередь заполнена.
Например,
35
Вывод
43<час>
Доступ к элементам
91
- Возвращает элемент из начала связанной очереди блокировки. Он возвращает105
если очередь пуста.114
- Возвращает объект итератора для последовательного доступа к элементу из связанной очереди блокировки. Выдает исключение, если очередь пуста. Мы должны импортировать129
пакет для его использования.
Например,
52
Вывод
64<час>
Удалить элементы
133
- Возвращает и удаляет указанный элемент из связанной очереди блокировки. Выдает исключение, если очередь пуста.148
- Возвращает и удаляет указанный элемент из связанной очереди блокировки. Он возвращает159
если очередь пуста.168
– Удаляет все элементы из связанной очереди блокировки.
Например,
76
Вывод
83<час>
методы put() и take()
В многопоточных процессах мы можем использовать 170
и 181
блокировать работу одного потока, чтобы синхронизировать его с другим потоком. Эти методы будут ждать, пока их можно будет успешно выполнить.
Метод put()
Чтобы вставить указанный элемент в конец связанной очереди блокировки, мы используем 194
метод.
Если связанная очередь блокировки заполнена, он ожидает, пока в связанной очереди блокировки не появится место для вставки элемента.
Например,
93
Вывод
100пре>Здесь
<час>208
метод может вызвать ошибку218
если он прерывается во время ожидания. Следовательно, мы должны заключить его в блок try..catch.метод take()
Чтобы вернуть и удалить элемент из начала связанной очереди блокировки, мы можем использовать
220
метод.Если связанная очередь блокировки пуста, она ожидает, пока в связанной очереди блокировки не появятся элементы для удаления.
Например,
118Вывод
123Здесь
<час>232
метод выдаст241
если он прерывается во время ожидания. Следовательно, мы должны заключить его в257
блокировать.Другие методы
Методы | Описания |
---|---|
260 | Выполняет поиск указанного элемента в связанной очереди блокировки. Если элемент найден, он возвращает 273 , если нет, возвращает 287 . |
291 | Возвращает длину связанной очереди блокировки. |
300 | Преобразует связанную очередь блокировки в массив и возвращает массив. |
318 | Преобразует связанную очередь блокировки в строку |
Зачем использовать LinkedBlockingQueue?
324
использует связанные списки в качестве внутреннего хранилища.
Он считается поточно-ориентированным. коллекция. Следовательно, он обычно используется в многопоточных приложениях.
Предположим, один поток вставляет элементы в очередь, а другой поток удаляет элементы из очереди.
Теперь, если первый поток медленнее второго, то связанная очередь блокировки может заставить второй поток ждать, пока первый поток не завершит свои операции.
java