Spec-Zone .ru
спецификации, руководства, описания, API
|
E
- тип элементов сохранен в этом набореpublic class ConcurrentLinkedQueue<E> extends AbstractQueue<E> implements Queue<E>, Serializable
ConcurrentLinkedQueue
соответствующий выбор, когда много потоков совместно используют доступ к общему набору. Как большинство других параллельных реализаций набора, этот класс не разрешает использование null
элементы. Эта реализация использует эффективный алгоритм "без ожидания", основанный на одном описанном в
Iterators являются слабо непротиворечивыми, возвращая элементы, отражающие состояние очереди в некоторый момент в или начиная с создания iterator. Они не бросают ConcurrentModificationException
, и может продолжиться одновременно с другими операциями. Элементы, содержавшиеся в очереди начиная с создания iterator, будут возвращены точно однажды.
Остерегайтесь этого, в отличие от этого в большинстве наборов, size
метод НЕ является постоянно-разовой работой. Из-за асинхронной природы этих очередей, определяя текущее число элементов требует обхода элементов, и так может сообщить о неточных результатах, если этот набор изменяется во время обхода. Дополнительно, объемные операции addAll
, removeAll
, retainAll
, containsAll
, equals
, и toArray
как гарантируют, не будут выполнены атомарно. Например, iterator, работающий одновременно с addAll
работа могла бы просмотреть только некоторые из добавленных элементов.
Этот класс и его iterator реализуют все дополнительные методы Queue
и Iterator
интерфейсы.
Эффекты непротиворечивости памяти: Как с другими параллельными наборами, действиями в потоке до размещения объекта в a ConcurrentLinkedQueue
произойдите - перед действиями, последующими за доступом или удалением того элемента от ConcurrentLinkedQueue
в другом потоке.
Этот класс является элементом Платформы Наборов Java.
Конструктор и Описание |
---|
ConcurrentLinkedQueue()
Создает a
ConcurrentLinkedQueue это первоначально пусто. |
ConcurrentLinkedQueue(Collection<? extends E> c)
Создает a
ConcurrentLinkedQueue первоначально содержа элементы данного набора, добавленного в порядке обхода iterator набора. |
Модификатор и Тип | Метод и Описание |
---|---|
boolean |
add(E e)
Вставляет указанный элемент в хвосте этой очереди.
|
boolean |
addAll(Collection<? extends E> c)
Добавляет все элементы в указанном наборе до конца этой очереди, в порядке, что они возвращаются iterator указанного набора.
|
boolean |
contains(Object o)
Возвраты
true если эта очередь содержит указанный элемент. |
boolean |
isEmpty()
Возвраты
true если эта очередь не содержит элементов. |
Iterator<E> |
iterator()
Возвращает iterator по элементам в этой очереди в надлежащей последовательности.
|
boolean |
offer(E e)
Вставляет указанный элемент в хвосте этой очереди.
|
E |
peek()
Получает, но не удаляет, глава этой очереди, или возвращает null, если эта очередь пуста.
|
E |
poll()
Получает и удаляет главу этой очереди, или возвращает null, если эта очередь пуста.
|
boolean |
remove(Object o)
Удаляет единственный экземпляр указанного элемента от этой очереди, если это присутствует.
|
int |
size()
Возвращает число элементов в этой очереди.
|
Объект[] |
toArray()
Возвращает массив, содержащий все элементы в этой очереди, в надлежащей последовательности.
|
<T> T[] |
toArray(T[] a)
Возвращает массив, содержащий все элементы в этой очереди, в надлежащей последовательности; тип времени выполнения возвращенного массива является типом указанного массива.
|
clear, element, remove
containsAll, removeAll, retainAll, toString
public ConcurrentLinkedQueue()
ConcurrentLinkedQueue
это первоначально пусто.public ConcurrentLinkedQueue(Collection<? extends E> c)
ConcurrentLinkedQueue
первоначально содержа элементы данного набора, добавленного в порядке обхода iterator набора.c
- набор элементов, чтобы первоначально содержатьNullPointerException
- если указанный набор или какой-либо из его элементов являются нулемpublic boolean add(E e)
IllegalStateException
или возвратитесь false
.add
в интерфейсе Collection<E>
add
в интерфейсе Queue<E>
add
в классе AbstractQueue<E>
e
- элемент, чтобы добавитьtrue
(как определено Collection.add(E)
)NullPointerException
- если указанный элемент является нулемpublic boolean offer(E e)
false
.offer
в интерфейсе Queue<E>
e
- элемент, чтобы добавитьtrue
(как определено Queue.offer(E)
)NullPointerException
- если указанный элемент является нулемpublic E poll()
Queue
public E peek()
Queue
public boolean isEmpty()
true
если эта очередь не содержит элементов.isEmpty
в интерфейсе Collection<E>
isEmpty
в классе AbstractCollection<E>
true
если эта очередь не содержит элементовpublic int size()
Integer.MAX_VALUE
элементы, возвраты Integer.MAX_VALUE
. Остерегайтесь этого, в отличие от этого в большинстве наборов, этот метод НЕ является постоянно-разовой работой. Из-за асинхронной природы этих очередей, определяя текущее число элементов требует O (n) обход. Дополнительно, если элементы добавляются или удаляются во время выполнения этого метода, возвращенный результат может быть неточным. Таким образом этот метод обычно не очень полезен в параллельных приложениях.
size
в интерфейсе Collection<E>
size
в классе AbstractCollection<E>
public boolean contains(Object o)
true
если эта очередь содержит указанный элемент. Более формально, возвраты true
если и только если эта очередь содержит по крайней мере один элемент e
так, что o.equals(e)
.contains
в интерфейсе Collection<E>
contains
в классе AbstractCollection<E>
o
- объект, который будет проверен на включение в этой очередиtrue
если эта очередь содержит указанный элементpublic boolean remove(Object o)
e
так, что o.equals(e)
, если эта очередь содержит один или более таких элементов. Возвраты true
если эта очередь, содержавшая указанный элемент (или эквивалентно, если эта очередь изменилась в результате вызова).remove
в интерфейсе Collection<E>
remove
в классе AbstractCollection<E>
o
- элемент, который будет удален из этой очереди, если существующийtrue
если эта очередь изменилась в результате вызоваpublic boolean addAll(Collection<? extends E> c)
addAll
из очереди, чтобы самостоятельно привести к IllegalArgumentException
.addAll
в интерфейсе Collection<E>
addAll
в классе AbstractQueue<E>
c
- элементы, которые будут вставлены в эту очередьtrue
если эта очередь изменилась в результате вызоваNullPointerException
- если указанный набор или какой-либо из его элементов являются нулемIllegalArgumentException
- если набор является этой очередьюAbstractQueue.add(Object)
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 Iterator<E> iterator()
Возвращенный iterator "слабо непротиворечивый" iterator, который никогда не будет бросать ConcurrentModificationException
, и гарантии, чтобы пересечь элементы, поскольку они существовали на конструкцию iterator, и может (но не гарантироваться), отражают любые модификации, последующие за конструкцией.
iterator
в интерфейсе Iterable<E>
iterator
в интерфейсе Collection<E>
iterator
в классе AbstractCollection<E>
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.