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