Spec-Zone .ru
спецификации, руководства, описания, API
|
E
- тип элементов сохранен в этом набореpublic class LinkedTransferQueue<E> extends AbstractQueue<E> implements TransferQueue<E>, Serializable
TransferQueue
основанный на соединенных узлах. Эта очередь упорядочивает FIFO элементов (первым прибыл - первым убыл) относительно любого данного производителя. Глава очереди - то, что элемент, который был на очереди самым долгим временем для некоторого производителя. Хвост очереди - то, что элемент, который был на очереди самым коротким временем для некоторого производителя. Остерегайтесь этого, в отличие от этого в большинстве наборов, size
метод НЕ является постоянно-разовой работой. Из-за асинхронной природы этих очередей, определяя текущее число элементов требует обхода элементов, и так может сообщить о неточных результатах, если этот набор изменяется во время обхода. Дополнительно, объемные операции addAll
, removeAll
, retainAll
, containsAll
, equals
, и toArray
как гарантируют, не будут выполнены атомарно. Например, iterator, работающий одновременно с addAll
работа могла бы просмотреть только некоторые из добавленных элементов.
Этот класс и его iterator реализуют все дополнительные методы Collection
и Iterator
интерфейсы.
Эффекты непротиворечивости памяти: Как с другими параллельными наборами, действиями в потоке до размещения объекта в a LinkedTransferQueue
произойдите - перед действиями, последующими за доступом или удалением того элемента от LinkedTransferQueue
в другом потоке.
Этот класс является элементом Платформы Наборов Java.
Конструктор и Описание |
---|
LinkedTransferQueue()
Создает первоначально пустой
LinkedTransferQueue . |
LinkedTransferQueue(Collection<? extends E> c)
Создает a
LinkedTransferQueue первоначально содержа элементы данного набора, добавленного в порядке обхода iterator набора. |
Модификатор и Тип | Метод и Описание |
---|---|
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()
Возвращает 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 потому что a LinkedTransferQueue не ограниченная емкость. |
boolean |
remove(Object o)
Удаляет единственный экземпляр указанного элемента от этой очереди, если это присутствует.
|
int |
size()
Возвращает число элементов в этой очереди.
|
E |
take()
Получает и удаляет главу этой очереди, ожидая в случае необходимости, пока элемент не становится доступным.
|
void |
transfer(E e)
Передает элемент потребителю, ожидая в случае необходимости, чтобы сделать так.
|
boolean |
tryTransfer(E e)
Передает элемент ожидающему потребителю сразу, если возможный.
|
boolean |
tryTransfer(E e, long timeout, TimeUnit unit)
Передает элемент потребителю, если возможно сделать так прежде, чем тайм-аут протекает.
|
addAll, clear, element, remove
containsAll, removeAll, retainAll, toArray, toArray, toString
public LinkedTransferQueue()
LinkedTransferQueue
.public LinkedTransferQueue(Collection<? extends E> c)
LinkedTransferQueue
первоначально содержа элементы данного набора, добавленного в порядке обхода iterator набора.c
- набор элементов, чтобы первоначально содержатьNullPointerException
- если указанный набор или какой-либо из его элементов являются нулемpublic void put(E e)
put
в интерфейсе BlockingQueue<E>
e
- элемент, чтобы добавитьNullPointerException
- если указанный элемент является нулемpublic boolean offer(E e, long timeout, TimeUnit unit)
false
.offer
в интерфейсе BlockingQueue<E>
e
- элемент, чтобы добавитьtimeout
- сколько времени ожидать перед отказом в модулях unitunit
- TimeUnit, определяющий, как интерпретировать параметр timeouttrue
(как определено BlockingQueue.offer
)NullPointerException
- если указанный элемент является нулемpublic boolean offer(E e)
false
.offer
в интерфейсе BlockingQueue<E>
offer
в интерфейсе Queue<E>
e
- элемент, чтобы добавитьtrue
(как определено Queue.offer(E)
)NullPointerException
- если указанный элемент является нулем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
- если указанный элемент является нулемpublic boolean tryTransfer(E e)
Более точно, сразу передает указанный элемент, если там существует потребитель, уже ожидающий, чтобы получить это (в take()
или синхронизированный poll
), иначе возврат false
не ставя в очередь элемент.
tryTransfer
в интерфейсе TransferQueue<E>
e
- элемент, чтобы передатьtrue
если элемент был передан, еще false
NullPointerException
- если указанный элемент является нулемpublic void transfer(E e) throws InterruptedException
Более точно, сразу передает указанный элемент, если там существует потребитель, уже ожидающий, чтобы получить это (в take()
или синхронизированный poll
), еще вставляет указанный элемент в хвосте этой очереди и ожидает, пока элемент не получается потребителем.
transfer
в интерфейсе TransferQueue<E>
e
- элемент, чтобы передатьNullPointerException
- если указанный элемент является нулемInterruptedException
- если прервано, ожидая, когда элемент не оставляют ставившим в очередьpublic boolean tryTransfer(E e, long timeout, TimeUnit unit) throws InterruptedException
Более точно, сразу передает указанный элемент, если там существует потребитель, уже ожидающий, чтобы получить это (в take()
или синхронизированный poll
), еще вставляет указанный элемент в хвосте этой очереди и ожидает, пока элемент не получается потребителем, возвращаясь false
если указанное время ожидания протекает прежде, чем элемент может быть передан.
tryTransfer
в интерфейсе TransferQueue<E>
e
- элемент, чтобы передатьtimeout
- сколько времени ожидать перед отказом в модулях unit
unit
- a TimeUnit
определение, как интерпретировать timeout
параметрtrue
в случае успеха, или false
если указанное время ожидания протекает перед завершением, когда элемент не оставляют ставившим в очередьNullPointerException
- если указанный элемент является нулемInterruptedException
- если прервано, ожидая, когда элемент не оставляют ставившим в очередь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 poll()
Queue
public int drainTo(Collection<? super E> c)
BlockingQueue
drainTo
в интерфейсе BlockingQueue<E>
c
- набор, чтобы передать элементы вNullPointerException
- если указанный набор является нулемIllegalArgumentException
- если указанный набор является этой очередью, или некоторое свойство элемента этой очереди препятствует тому, чтобы это было добавлено к указанному наборуpublic int drainTo(Collection<? super E> c, int maxElements)
BlockingQueue
drainTo
в интерфейсе BlockingQueue<E>
c
- набор, чтобы передать элементы вmaxElements
- максимальное количество элементов, чтобы передатьNullPointerException
- если указанный набор является нулемIllegalArgumentException
- если указанный набор является этой очередью, или некоторое свойство элемента этой очереди препятствует тому, чтобы это было добавлено к указанному наборуpublic Iterator<E> iterator()
Возвращенный iterator "слабо непротиворечивый" iterator, который никогда не будет бросать ConcurrentModificationException
, и гарантии, чтобы пересечь элементы, поскольку они существовали на конструкцию iterator, и может (но не гарантироваться), отражают любые модификации, последующие за конструкцией.
iterator
в интерфейсе Iterable<E>
iterator
в интерфейсе Collection<E>
iterator
в классе AbstractCollection<E>
public E peek()
Queue
public boolean isEmpty()
true
если эта очередь не содержит элементов.isEmpty
в интерфейсе Collection<E>
isEmpty
в классе AbstractCollection<E>
true
если эта очередь не содержит элементовpublic boolean hasWaitingConsumer()
TransferQueue
true
если есть по крайней мере один потребитель, ожидающий, чтобы получить элемент через BlockingQueue.take()
или синхронизированный poll
. Возвращаемое значение представляет мгновенное положение дел.hasWaitingConsumer
в интерфейсе TransferQueue<E>
true
если есть по крайней мере один ожидающий потребительpublic int size()
Integer.MAX_VALUE
элементы, возвраты Integer.MAX_VALUE
. Остерегайтесь этого, в отличие от этого в большинстве наборов, этот метод НЕ является постоянно-разовой работой. Из-за асинхронной природы этих очередей, определяя текущее число элементов требует O (n) обход.
size
в интерфейсе Collection<E>
size
в классе AbstractCollection<E>
public int getWaitingConsumerCount()
TransferQueue
BlockingQueue.take()
или синхронизированный poll
. Возвращаемое значение является приближением мгновенного положения дел, которое может быть неточным, если потребители завершились или бросили ожидать. Значение может быть полезным для контроля и эвристики, но не для управления синхронизацией. Реализации этого метода, вероятно, будут заметно медленнее чем те для TransferQueue.hasWaitingConsumer()
.getWaitingConsumerCount
в интерфейсе TransferQueue<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 int remainingCapacity()
Integer.MAX_VALUE
потому что a LinkedTransferQueue
не ограниченная емкость.remainingCapacity
в интерфейсе BlockingQueue<E>
Integer.MAX_VALUE
(как определено BlockingQueue.remainingCapacity()
)
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.