Spec-Zone .ru
спецификации, руководства, описания, API
|
E
- тип элементов сохранен в этом набореpublic class ArrayBlockingQueue<E> extends AbstractQueue<E> implements BlockingQueue<E>, Serializable
Это - классический "ограниченный буфер", в котором фиксированный - размерный массив содержит элементы, вставленные производителями и извлеченный потребителями. После того, как создаваемый, емкость не может быть изменена. Попытки к put
элемент в полную очередь приведет к блокированию работы; попытки к take
элемент от пустой очереди так же блокирует.
Этот класс поддерживает дополнительную политику справедливости для того, чтобы упорядочить ожидающие потоки производителя и потребителя. По умолчанию это упорядочивание не гарантируется. Однако, очередь, созданная с набором справедливости к true
предоставляет доступ потоков в порядке FIFO. Справедливость обычно уменьшает пропускную способность, но уменьшает изменчивость и избегает исчерпания ресурсов.
Этот класс и его iterator реализуют все дополнительные методы Collection
и Iterator
интерфейсы.
Этот класс является элементом Платформы Наборов Java.
Конструктор и Описание |
---|
ArrayBlockingQueue(int capacity)
Создает
ArrayBlockingQueue с данной (фиксированной) емкостью и политикой доступа по умолчанию. |
ArrayBlockingQueue(int capacity, boolean fair)
Создает
ArrayBlockingQueue с данной (фиксированной) емкостью и указанной политикой доступа. |
ArrayBlockingQueue(int capacity, boolean fair, Collection<? extends E> c)
Создает
ArrayBlockingQueue с данной (фиксированной) емкостью, указанной политикой доступа и первоначально содержащий элементы данного набора, добавленного в порядке обхода iterator набора. |
Модификатор и Тип | Метод и Описание |
---|---|
boolean |
add(E e)
Вставляет указанный элемент в хвосте этой очереди, если возможно сделать так сразу, не превышая емкость очереди, возвращаясь
true на успех и бросок IllegalStateException если эта очередь полна. |
void |
clear()
Атомарно удаляет все элементы от этой очереди.
|
boolean |
contains(Object o)
Возвраты
true если эта очередь содержит указанный элемент. |
int |
drainTo(Collection<? super E> c)
Удаляет все доступные элементы из этой очереди и добавляет их к данному набору.
|
int |
drainTo(Collection<? super E> c, int maxElements)
Удаляет самое большее данное число доступных элементов от этой очереди и добавляет их к данному набору.
|
Iterator<E> |
iterator()
Возвращает iterator по элементам в этой очереди в надлежащей последовательности.
|
boolean |
offer(E e)
Вставляет указанный элемент в хвосте этой очереди, если возможно сделать так сразу, не превышая емкость очереди, возвращаясь
true на успех и false если эта очередь полна. |
boolean |
offer(E e, long timeout, TimeUnit unit)
Вставляет указанный элемент в хвосте этой очереди, дожидаясь к указанному времени ожидания для пространства, чтобы стать доступным, если очередь полна.
|
E |
peek()
Получает, но не удаляет, глава этой очереди, или возвращает null, если эта очередь пуста.
|
E |
poll()
Получает и удаляет главу этой очереди, или возвращает null, если эта очередь пуста.
|
E |
poll(long timeout, TimeUnit unit)
Получает и удаляет главу этой очереди, дожидаясь к указанному времени ожидания в случае необходимости для элемента, чтобы стать доступным.
|
void |
put(E e)
Вставляет указанный элемент в хвосте этой очереди, ожидающей пространства, чтобы стать доступным, если очередь полна.
|
int |
remainingCapacity()
Возвращает число дополнительных элементов, что эта очередь может идеально (в отсутствие памяти, или ограничения ресурса) принимают без блокирования.
|
boolean |
remove(Object o)
Удаляет единственный экземпляр указанного элемента от этой очереди, если это присутствует.
|
int |
size()
Возвращает число элементов в этой очереди.
|
E |
take()
Получает и удаляет главу этой очереди, ожидая в случае необходимости, пока элемент не становится доступным.
|
Объект[] |
toArray()
Возвращает массив, содержащий все элементы в этой очереди, в надлежащей последовательности.
|
<T> T[] |
toArray(T[] a)
Возвращает массив, содержащий все элементы в этой очереди, в надлежащей последовательности; тип времени выполнения возвращенного массива является типом указанного массива.
|
Строка |
toString()
Возвращает строковое представление этого набора.
|
addAll, element, remove
containsAll, isEmpty, removeAll, retainAll
public ArrayBlockingQueue(int capacity)
ArrayBlockingQueue
с данной (фиксированной) емкостью и политикой доступа по умолчанию.capacity
- емкость этой очередиIllegalArgumentException
- если capacity < 1
public ArrayBlockingQueue(int capacity, boolean fair)
ArrayBlockingQueue
с данной (фиксированной) емкостью и указанной политикой доступа.capacity
- емкость этой очередиfair
- если true
тогда доступы очереди для потоков, блокированных на вставке или удалении, обрабатываются в порядке FIFO; если false
порядок доступа является неуказанным.IllegalArgumentException
- если capacity < 1
public ArrayBlockingQueue(int capacity, boolean fair, Collection<? extends E> c)
ArrayBlockingQueue
с данной (фиксированной) емкостью, указанной политикой доступа и первоначально содержащий элементы данного набора, добавленного в порядке обхода iterator набора.capacity
- емкость этой очередиfair
- если true
тогда доступы очереди для потоков, блокированных на вставке или удалении, обрабатываются в порядке FIFO; если false
порядок доступа является неуказанным.c
- набор элементов, чтобы первоначально содержатьIllegalArgumentException
- если capacity
меньше чем c.size()
, или меньше чем 1.NullPointerException
- если указанный набор или какой-либо из его элементов являются нулемpublic boolean add(E e)
true
на успех и бросок IllegalStateException
если эта очередь полна.add
в интерфейсе Collection<E>
add
в интерфейсе BlockingQueue<E>
add
в интерфейсе Queue<E>
add
в классе AbstractQueue<E>
e
- элемент, чтобы добавитьtrue
(как определено Collection.add(E)
)IllegalStateException
- если эта очередь полнаNullPointerException
- если указанный элемент является нулемpublic boolean offer(E e)
true
на успех и false
если эта очередь полна. Этот метод обычно предпочтителен для метода add(E)
, который может быть не в состоянии вставить элемент только, выдавая исключение.offer
в интерфейсе BlockingQueue<E>
offer
в интерфейсе Queue<E>
e
- элемент, чтобы добавитьNullPointerException
- если указанный элемент является нулемpublic void put(E e) throws InterruptedException
put
в интерфейсе BlockingQueue<E>
e
- элемент, чтобы добавитьInterruptedException
- если прервано, ожидаяNullPointerException
- если указанный элемент является нулемpublic boolean offer(E e, long timeout, TimeUnit unit) throws InterruptedException
offer
в интерфейсе BlockingQueue<E>
e
- элемент, чтобы добавитьtimeout
- сколько времени ожидать перед отказом в модулях unitunit
- TimeUnit, определяющий, как интерпретировать параметр timeoutInterruptedException
- если прервано, ожидаяNullPointerException
- если указанный элемент является нулемpublic E poll()
Queue
public E take() throws InterruptedException
BlockingQueue
take
в интерфейсе BlockingQueue<E>
InterruptedException
- если прервано, ожидаяpublic E poll(long timeout, TimeUnit unit) throws InterruptedException
BlockingQueue
poll
в интерфейсе BlockingQueue<E>
timeout
- сколько времени ожидать перед отказом в модулях unitunit
- TimeUnit, определяющий, как интерпретировать параметр timeoutInterruptedException
- если прервано, ожидаяpublic E peek()
Queue
public int size()
size
в интерфейсе Collection<E>
size
в классе AbstractCollection<E>
public int remainingCapacity()
size
из этой очереди. Отметьте, что невозможно всегда говорить, успешно выполнится ли попытка вставить элемент, осматривая remainingCapacity
потому что это может иметь место, что другой поток собирается вставить или удалить элемент.
remainingCapacity
в интерфейсе BlockingQueue<E>
public boolean remove(Object o)
e
так, что o.equals(e)
, если эта очередь содержит один или более таких элементов. Возвраты true
если эта очередь, содержавшая указанный элемент (или эквивалентно, если эта очередь изменилась в результате вызова). Удаление внутренних элементов в круговом массиве, базируемые очереди являются свойственно медленной и подрывной работой, так должен быть предпринят только при исключительных обстоятельствах, идеально только, когда очередь, как известно, не доступна другими потоками.
remove
в интерфейсе Collection<E>
remove
в интерфейсе BlockingQueue<E>
remove
в классе AbstractCollection<E>
o
- элемент, который будет удален из этой очереди, если существующийtrue
если эта очередь изменилась в результате вызоваpublic boolean contains(Object o)
true
если эта очередь содержит указанный элемент. Более формально, возвраты true
если и только если эта очередь содержит по крайней мере один элемент e
так, что o.equals(e)
.contains
в интерфейсе Collection<E>
contains
в интерфейсе BlockingQueue<E>
contains
в классе AbstractCollection<E>
o
- объект, который будет проверен на включение в этой очередиtrue
если эта очередь содержит указанный элементpublic Object[] toArray()
Возвращенный массив будет "безопасен" в этом, никакие ссылки на него не сохраняются этой очередью. (Другими словами этот метод должен выделить новый массив). Вызывающая сторона таким образом свободна изменить возвращенный массив.
Этот метод действует как мост между основанными на массиве и основанными на наборе API.
toArray
в интерфейсе Collection<E>
toArray
в классе AbstractCollection<E>
public <T> T[] toArray(T[] a)
Если эта очередь помещается в указанный массив с комнатой, чтобы сэкономить (то есть, у массива есть больше элементов чем эта очередь), элемент в массиве сразу после конца очереди устанавливается в null
.
Как toArray()
метод, этот метод действует как мост между основанными на массиве и основанными на наборе API. Далее, этот метод позволяет точное управление типом времени выполнения выходного массива, и, при определенных обстоятельствах, может использоваться, чтобы сохранить затраты выделения.
Предположить x
очередь, которая, как известно, содержала только строки. Следующий код может использоваться, чтобы вывести очередь в недавно выделенный массив String
:
String[] y = x.toArray(new String[0]);Отметьте это
toArray(new Object[0])
идентично в функции toArray()
.toArray
в интерфейсе Collection<E>
toArray
в классе AbstractCollection<E>
a
- массив, в который должны быть сохранены элементы очереди, если это является достаточно большим; иначе, новый массив того же самого типа времени выполнения выделяется с этой цельюArrayStoreException
- если тип времени выполнения указанного массива не является супертипом типа времени выполнения каждого элемента в этой очередиNullPointerException
- если указанный массив является нулемpublic String toString()
AbstractCollection
String.valueOf(Object)
.toString
в классе AbstractCollection<E>
public void clear()
clear
в интерфейсе Collection<E>
clear
в классе AbstractQueue<E>
public int drainTo(Collection<? super E> c)
BlockingQueue
drainTo
в интерфейсе BlockingQueue<E>
c
- набор, чтобы передать элементы вUnsupportedOperationException
- если добавление элементов не поддерживается указанным наборомClassCastException
- если класс элемента этой очереди препятствует тому, чтобы это было добавлено к указанному наборуNullPointerException
- если указанный набор является нулемIllegalArgumentException
- если указанный набор является этой очередью, или некоторое свойство элемента этой очереди препятствует тому, чтобы это было добавлено к указанному наборуpublic int drainTo(Collection<? super E> c, int maxElements)
BlockingQueue
drainTo
в интерфейсе BlockingQueue<E>
c
- набор, чтобы передать элементы вmaxElements
- максимальное количество элементов, чтобы передатьUnsupportedOperationException
- если добавление элементов не поддерживается указанным наборомClassCastException
- если класс элемента этой очереди препятствует тому, чтобы это было добавлено к указанному наборуNullPointerException
- если указанный набор является нулемIllegalArgumentException
- если указанный набор является этой очередью, или некоторое свойство элемента этой очереди препятствует тому, чтобы это было добавлено к указанному наборуpublic Iterator<E> iterator()
Возвращенный Iterator
"слабо непротиворечивое" iterator, который никогда не будет бросать ConcurrentModificationException
, и гарантии, чтобы пересечь элементы, поскольку они существовали на конструкцию iterator, и может (но не гарантироваться), отражают любые модификации, последующие за конструкцией.
iterator
в интерфейсе Iterable<E>
iterator
в интерфейсе Collection<E>
iterator
в классе AbstractCollection<E>
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.