Spec-Zone.ru › OpenJDK 8

Класс LinkedTransferQueue<E>

  • java.lang.Object
    • java.util.AbstractCollection<E>
      • java.util.AbstractQueue<E>
        • java.util.concurrent.LinkedTransferQueue<E>
Type Parameters:
E - тип элементов, хранящихся в этом наборе
Все реализованные интерфейсы:
Serializable, Iterable<E>, Collection<E>, BlockingQueue<E>, TransferQueue<E>, Queue<E>

public class LinkedTransferQueue<E>
extends AbstractQueue<E>
implements TransferQueue<E>, Serializable

Неограниченная очередь TransferQueue, основанная на связанных узлах. Эта очередь упорядочивает элементы FIFO (первым вошел, первым вышел) относительно любого заданного производителя. Голова очереди — это элемент, который находился в очереди дольше всего для какого-то производителя. Хвост очереди — это элемент, который находился в очереди наименьшее время для какого-то производителя.

Обратите внимание, что, в отличие от большинства коллекций, метод size НЕ является операцией с постоянным временем. Из-за асинхронной природы этих очередей определение текущего количества элементов требует обхода элементов, и поэтому может сообщать неточные результаты, если эта коллекция изменяется во время обхода. Кроме того, массовые операции addAll, removeAll, retainAll, containsAll, equals, и toArray не гарантируются, что выполнятся атомарно. Например, итератор, работающий одновременно с операцией addAll, может увидеть только часть добавленных элементов.

Этот класс и его итератор реализуют все необязательные методы интерфейсов Collection и Iterator.

Эффекты согласованности памяти: Как и в других конкурентных коллекциях, действия в потоке перед размещением объекта в LinkedTransferQueue происходят до последующих действий доступа или удаления этого элемента из LinkedTransferQueue в другом потоке.

Этот класс является частью Фреймворка Java Collections.

С момента:
1.7
См. также:
Сериализованная форма

Конструкторы

Конструктор и описание
LinkedTransferQueue()

Создаёт пустую очередь LinkedTransferQueue.

LinkedTransferQueue(Collection<? extends E> c)

Создаёт очередь LinkedTransferQueue, содержащую элементы заданной коллекции, добавленные в порядке обхода итератора коллекции.

Методы

Модификатор и тип Метод и описание
boolean add(E e)

Вставляет указанный элемент в конец этой очереди.

boolean contains(Object o)

Возвращает true, если эта очередь содержит указанный элемент.

int drainTo(Collection<? super E> c)

Удаляет все доступные элементы из этой очереди и добавляет их в заданную коллекцию.

int drainTo(Collection<? super E> c, int maxElements)

Удаляет не более заданного количества доступных элементов из этой очереди и добавляет их в заданную коллекцию.

int getWaitingConsumerCount()

Возвращает оценку количества потребителей, ожидающих получения элементов через BlockingQueue.take() или с тайм-аутом poll.

boolean hasWaitingConsumer()

Возвращает true, если есть по крайней мере один потребитель, ожидающий получения элемента через BlockingQueue.take() или с тайм-аутом poll.

boolean isEmpty()

Возвращает true, если эта очередь не содержит элементов.

Iterator<E> iterator()

Возвращает итератор по элементам в этой очереди в правильной последовательности.

boolean offer(E e)

Вставляет указанный элемент в конец этой очереди.

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()

Всегда возвращает Integer.MAX_VALUE, потому что очередь LinkedTransferQueue не ограничена по размеру.

boolean remove(Object o)

Удаляет единственный экземпляр указанного элемента из этой очереди, если он присутствует.

int size()

Возвращает количество элементов в этой очереди.

Spliterator<E> spliterator()

Возвращает Spliterator по элементам в этой очереди.

E take()

Возвращает и удаляет голову этой очереди, ожидая, если необходимо, пока элемент не станет доступным.

void transfer(E e)

Переносит элемент к потребителю, ожидая, если необходимо.

boolean tryTransfer(E e)

Немедленно переносит элемент к ожидающему потребителю, если это возможно.

boolean tryTransfer(E e, long timeout, TimeUnit unit)

Переносит элемент к потребителю, если это возможно до истечения тайм-аута.

Методы, унаследованные от класса java.util.AbstractQueue

addAll, clear, element, remove

Методы, унаследованные от класса java.util.AbstractCollection

containsAll, removeAll, retainAll, toArray, toArray, toString

Методы, унаследованные от класса java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

Методы, унаследованные от интерфейса java.util.Queue

element, remove

Методы, унаследованные от интерфейса java.util.Collection

addAll, clear, containsAll, equals, hashCode, parallelStream, removeAll, removeIf, retainAll, stream, toArray, toArray

Методы, унаследованные от интерфейса java.lang.Iterable

forEach

Конструкторы

LinkedTransferQueue

public LinkedTransferQueue()

Создаёт пустую LinkedTransferQueue.

LinkedTransferQueue

public LinkedTransferQueue(Collection<? extends E> c)

Создаёт LinkedTransferQueue, изначально содержащую элементы заданного набора, добавленные в порядке обхода итератора набора.

Параметры:
c - набор элементов, которые должны содержаться изначально
Исключения:
NullPointerException - если указанный набор или любой из его элементов имеют значение null

Методы

spliterator

public Spliterator<E> spliterator()

Возвращает Spliterator над элементами в этой очереди.

Возвращаемый разделитель является слабо согласованным.

Разделитель Spliterator сообщает о Spliterator.CONCURRENT, Spliterator.ORDERED и Spliterator.NONNULL.

Унаследован от:
spliterator в интерфейсе Iterable<E>
Унаследован от:
spliterator в интерфейсе Collection<E>
Примечание реализации:
Spliterator реализует trySplit для обеспечения ограниченного параллелизма.
Возвращаемое значение:
Spliterator над элементами в этой очереди
С версии:
1.8

put

public void put(E e)

Вставляет указанный элемент в конец этой очереди. Поскольку очередь неограничена, этот метод никогда не будет блокироваться.

Унаследован от:
put в интерфейсе BlockingQueue<E>
Параметры:
e - элемент для добавления
Исключения:
NullPointerException - если указанный элемент имеет значение null

offer

public boolean offer(E e,
                     long timeout,
                     TimeUnit unit)

Вставляет указанный элемент в конец этой очереди. Поскольку очередь неограничена, этот метод никогда не будет блокироваться или возвращать false.

Унаследован от:
offer в интерфейсе BlockingQueue<E>
Параметры:
e - элемент для добавления
timeout - время ожидания, прежде чем отказаться, в единицах unit
unit - TimeUnit определяющий, как интерпретировать параметр timeout
Возвращаемое значение:
true (как указано в BlockingQueue.offer)
Исключения:
NullPointerException - если указанный элемент имеет значение null

offer

public boolean offer(E e)

Вставляет указанный элемент в конец этой очереди. Поскольку очередь неограничена, этот метод никогда не вернёт false.

Унаследован от:
offer в интерфейсе BlockingQueue<E>
Унаследован от:
offer в интерфейсе Queue<E>
Параметры:
e - элемент для добавления
Возвращаемое значение:
true (как указано в Queue.offer(E))
Исключения:
NullPointerException - если указанный элемент имеет значение null

add

public boolean add(E e)

Вставляет указанный элемент в конец этой очереди. Поскольку очередь неограничена, этот метод никогда не выбросит IllegalStateException или не вернёт false.

Унаследован от:
add в интерфейсе Collection<E>
Унаследован от:
add в интерфейсе BlockingQueue<E>
Унаследован от:
add в интерфейсе Queue<E>
Переопределяет:
add в классе AbstractQueue<E>
Параметры:
e - элемент для добавления
Возвращаемое значение:
true (как указано в Collection.add(E))
Исключения:
NullPointerException - если указанный элемент имеет значение null

tryTransfer

public boolean tryTransfer(E e)

Немедленно передает элемент ожидающему потребителю, если это возможно.

Точнее, немедленно передаёт указанный элемент, если существует потребитель, уже ожидающий его получения (в take() или в режиме ожидания с ограничением времени poll), в противном случае возвращает false без помещения элемента в очередь.

Унаследован от:
tryTransfer в интерфейсе TransferQueue<E>
Параметры:
e - элемент для передачи
Возвращаемое значение:
true если элемент был передан, иначе false
Исключения:
NullPointerException - если указанный элемент имеет значение null

transfer

public void transfer(E e)
              throws InterruptedException

Передаёт элемент потребителю, ожидая, если необходимо.

Точнее, передаёт указанный элемент немедленно, если существует потребитель, уже ожидающий его получения (в take() или в режиме ожидания с ограничением времени poll), в противном случае помещает указанный элемент в конец этой очереди и ожидает, пока элемент не будет получен потребителем.

Унаследован от:
transfer в интерфейсе TransferQueue<E>
Параметры:
e - элемент для передачи
Исключения:
NullPointerException - если указанный элемент имеет значение null
InterruptedException - если прервано ожидание, в этом случае элемент не остаётся в очереди

tryTransfer

public boolean tryTransfer(E e,
                           long timeout,
                           TimeUnit unit)
                    throws InterruptedException

Передаёт элемент потребителю, если это возможно до истечения срока ожидания.

Точнее, передаёт указанный элемент немедленно, если существует потребитель, уже ожидающий его получения (в take() или в режиме ожидания с ограничением времени poll), в противном случае помещает указанный элемент в конец этой очереди и ожидает, пока элемент не будет получен потребителем, возвращает false если указанное время ожидания истечёт до передачи элемента.

Унаследован от:
tryTransfer в интерфейсе TransferQueue<E>
Параметры:
e - элемент для передачи
timeout - время ожидания, прежде чем отказаться, в единицах unit
unit - TimeUnit определяющий, как интерпретировать параметр timeout
Возвращаемое значение:
true если успешно, или false если указанное время ожидания истекло до завершения, в этом случае элемент не остаётся в очереди
Исключения:
NullPointerException - если указанный элемент имеет значение null
InterruptedException - если ожидание прервано, в этом случае элемент не остаётся в очереди

take

public E take()
       throws InterruptedException

Описание скопировано из интерфейса: BlockingQueue

Извлекает и удаляет голову этой очереди, ожидая, если необходимо, пока элемент не станет доступным.

Унаследован от:
take в интерфейсе BlockingQueue<E>
Возвращаемое значение:
голова этой очереди
Исключения:
InterruptedException - если ожидание прервано

poll

public E poll(long timeout,
              TimeUnit unit)
       throws InterruptedException

Описание скопировано из интерфейса: BlockingQueue

Извлекает и удаляет голову этой очереди, ожидая до указанного времени ожидания, если необходимо, чтобы элемент стал доступным.

Унаследован от:
poll в интерфейсе BlockingQueue<E>
Параметры:
timeout - время ожидания, прежде чем отказаться, в единицах unit
unit - TimeUnit определяющий, как интерпретировать параметр timeout
Возвращаемое значение:
голова этой очереди, или null если указанное время ожидания истекает до того, как элемент становится доступным
Исключения:
InterruptedException - если ожидание прервано

poll

public E poll()

Описание скопировано из интерфейса: Queue

Извлекает и удаляет голову этой очереди или возвращает null если эта очередь пуста.

Унаследован от:
poll в интерфейсе Queue<E>
Возвращаемое значение:
голова этой очереди или null если эта очередь пуста

drainTo

public int drainTo(Collection<? super E> c)

Описание скопировано из интерфейса: BlockingQueue

Удаляет все доступные элементы из этой очереди и добавляет их в заданный набор. Эта операция может быть более эффективной, чем многократное обращение к этой очереди с методом poll(). Ошибка, возникшая при попытке добавить элементы в набор c, может привести к тому, что элементы будут находиться ни в одном, ни в другом, ни в обоих наборах, когда возникает соответствующее исключение. Попытки слить очередь в саму себя приведут к IllegalArgumentException. Кроме того, поведение этой операции не определено, если указанный набор изменяется во время выполнения операции.

Унаследован от:
drainTo в интерфейсе BlockingQueue<E>
Параметры:
c - набор для перемещения элементов
Возвращаемое значение:
количество переданных элементов
Исключения:
NullPointerException - если указанный набор имеет значение null
IllegalArgumentException - если указанный набор - это та же самая очередь, или какая-либо характеристика элемента в этой очереди препятствует его добавлению в указанный набор

drainTo

public int drainTo(Collection<? super E> c,
                   int maxElements)

Описание скопировано из интерфейса: BlockingQueue

Удаляет не более заданного количества доступных элементов из этой очереди и добавляет их в заданный набор. Ошибка, возникшая при попытке добавить элементы в набор c, может привести к тому, что элементы окажутся ни в одном, ни в том, ни в другом, или в обоих наборах, когда будет выброшено соответствующее исключение. Попытки опорожнить очередь в саму себя приводят к IllegalArgumentException. Кроме того, поведение этой операции не определено, если указанный набор изменяется во время выполнения операции.

Указано в:
drainTo в интерфейсе BlockingQueue<E>
Параметры:
c - набор для переноса элементов
maxElements - максимальное количество элементов для переноса
Возвращает:
количество перенесённых элементов
Исключение:
NullPointerException - если указанный набор равен null
IllegalArgumentException - если указанный набор — это эта очередь или некоторые свойства элемента этой очереди препятствуют его добавлению в указанный набор

iterator

public Iterator<E> iterator()

Возвращает итератор по элементам в этой очереди в правильной последовательности. Элементы будут возвращаться в порядке от первого (головы) к последнему (хвосту).

Возвращаемый итератор слабо согласован.

Указано в:
iterator в интерфейсе Iterable<E>
Указано в:
iterator в интерфейсе Collection<E>
Указано в:
iterator в классе AbstractCollection<E>
Возвращает:
итератор по элементам в этой очереди в правильной последовательности

peek

public E peek()

Описание скопировано из интерфейса: Queue

Возвращает, но не удаляет, голову этой очереди или возвращает null, если эта очередь пуста.

Указано в:
peek в интерфейсе Queue<E>
Возвращает:
голову этой очереди или null, если эта очередь пуста

isEmpty

public boolean isEmpty()

Возвращает true, если эта очередь не содержит элементов.

Указано в:
isEmpty в интерфейсе Collection<E>
Переопределяет:
isEmpty в классе AbstractCollection<E>
Возвращает:
true если эта очередь не содержит элементов

hasWaitingConsumer

public boolean hasWaitingConsumer()

Описание скопировано из интерфейса: TransferQueue

Возвращает true, если существует хотя бы один потребитель, ожидающий получения элемента через BlockingQueue.take() или с таймаутом poll. Возвращаемое значение представляет собой мгновенное состояние дел.

Указано в:
hasWaitingConsumer в интерфейсе TransferQueue<E>
Возвращает:
true если существует как минимум один ожидающий потребитель

size

public int size()

Возвращает количество элементов в этой очереди. Если эта очередь содержит более Integer.MAX_VALUE элементов, возвращает Integer.MAX_VALUE.

Обратите внимание, что в отличие от большинства коллекций, этот метод НЕ является операцией постоянного времени. Из-за асинхронной природы этих очередей определение текущего количества элементов требует обхода O(n).

Указано в:
size в интерфейсе Collection<E>
Указано в:
size в классе AbstractCollection<E>
Возвращает:
количество элементов в этой очереди

getWaitingConsumerCount

public int getWaitingConsumerCount()

Описание скопировано из интерфейса: TransferQueue

Возвращает приблизительное количество потребителей, ожидающих получения элементов через BlockingQueue.take() или с таймаутом poll. Возвращаемое значение является приближением текущего состояния, которое может быть неточным, если потребители завершили ожидание или отказались от него. Значение может быть полезно для мониторинга и эвристик, но не для управления синхронизацией. Реализации этого метода, вероятно, будут заметно медленнее, чем для TransferQueue.hasWaitingConsumer().

Указано в:
getWaitingConsumerCount в интерфейсе TransferQueue<E>
Возвращает:
количество потребителей, ожидающих получения элементов

remove

public boolean remove(Object o)

Удаляет единственный экземпляр указанного элемента из этой очереди, если он присутствует. Более формально, удаляет элемент e, такой что o.equals(e), если эта очередь содержит один или несколько таких элементов. Возвращает true, если эта очередь содержала указанный элемент (или, что эквивалентно, если эта очередь изменилась в результате вызова).

Указано в:
remove в интерфейсе Collection<E>
Указано в:
remove в интерфейсе BlockingQueue<E>
Переопределяет:
remove в классе AbstractCollection<E>
Параметры:
o - элемент, который необходимо удалить из этой очереди, если он присутствует
Возвращает:
true если эта очередь изменилась в результате вызова

contains

public boolean contains(Object o)

Возвращает true, если эта очередь содержит указанный элемент. Более формально, возвращает true, если и только если эта очередь содержит как минимум один элемент e, такой что o.equals(e)

Указано в:
contains в интерфейсе Collection<E>
Указано в:
contains в интерфейсе BlockingQueue<E>
Переопределяет:
contains в классе AbstractCollection<E>
Параметры:
o - объект, который требуется проверить на наличие в этой очереди
Возвращает:
true если эта очередь содержит указанный элемент

remainingCapacity

public int remainingCapacity()

Всегда возвращает Integer.MAX_VALUE, потому что LinkedTransferQueue не ограничена по емкости.

Указано в:
remainingCapacity в интерфейсе BlockingQueue<E>
Возвращает:
Integer.MAX_VALUE (как указано в BlockingQueue.remainingCapacity)

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API