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 happen-before到该元素的从访问或移除后续动作LinkedTransferQueue在另一个线程。
| Constructor and Description |
|---|
LinkedTransferQueue()
创建一个最初空的
LinkedTransferQueue 。
|
LinkedTransferQueue(Collection<? extends E> c)
创建一个
LinkedTransferQueue最初包含给定集合的元素,以集合的迭代器的遍历顺序添加。
|
| Modifier and Type | Method and Description |
|---|---|
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()
|
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)
如果可以在超时过程之前将元素传送给消费者。
|
addAll, clear, element, removecontainsAll, removeAll, retainAll, toArray, toArray, toStringclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitaddAll, clear, containsAll, equals, hashCode, parallelStream, removeAll, removeIf, retainAll, stream, toArray, toArraypublic LinkedTransferQueue()
LinkedTransferQueue 。
public LinkedTransferQueue(Collection<? extends E> c)
LinkedTransferQueue最初包含给定集合的元素,以集合的迭代器的遍历顺序添加。
c - 最初包含的元素的集合
NullPointerException - 如果指定的集合或其任何元素为空
public Spliterator<E> spliterator()
Spliterator 。
返回的拼接器是weakly consistent 。
该Spliterator报告Spliterator.CONCURRENT , Spliterator.ORDERED和Spliterator.NONNULL 。
spliterator在接口
Iterable<E>
spliterator在界面
Collection<E>
Spliterator实现
trySplit以允许有限的并行性。
Spliterator在这个队列中的元素
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 - 放弃等待多久,单位为
unit
unit - a
TimeUnit确定如何解释
timeout参数
true (由
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)
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 - 放弃等待多久,以
unit为单位
unit - a
TimeUnit确定如何解释
timeout参数
null如果在元素可用之前经过指定的等待时间
InterruptedException - 如果在等待时中断
public int drainTo(Collection<? super E> c)
BlockingQueue复制
c添加元素时遇到的c可能会导致元素在抛出关联的异常时既不在两个集合中,也可能是两个集合。
尝试将队列排入自身会导致IllegalArgumentException 。
此外,如果在操作进行中修改了指定的集合,则此操作的行为是未定义的。
drainTo在界面
BlockingQueue<E>
c - 将元素传输到的集合
NullPointerException - 如果指定的集合为空
IllegalArgumentException - 如果指定的集合是此队列,或此队列的某个元素的某些属性阻止将其添加到指定的集合
public int drainTo(Collection<? super E> c, int maxElements)
BlockingQueue复制
c添加元素时遇到的c可能会导致在抛出关联的异常时,元素既不在两个集合中,也可能不是两个集合。
尝试将队列排入自身导致IllegalArgumentException 。
此外,如果在操作进行中修改了指定的集合,则此操作的行为是未定义的。
drainTo在界面
BlockingQueue<E>
c - 传输元素的集合
maxElements - 要传输的元素的最大数量
NullPointerException - 如果指定的集合为空
IllegalArgumentException - 如果指定的集合是此队列,或此队列的某个元素的某些属性阻止将其添加到指定的集合
public Iterator<E> iterator()
iterator在界面
Iterable<E>
iterator在界面
Collection<E>
iterator在类别
AbstractCollection<E>
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因为
LinkedTransferQueue是不容量限制。
remainingCapacity在界面
BlockingQueue<E>
Integer.MAX_VALUE (由
BlockingQueue.remainingCapacity规定 )
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.