E
-元素举行此集合中的类型
public class ConcurrentLinkedQueue<E> extends AbstractQueue<E> implements Queue<E>, Serializable
ConcurrentLinkedQueue
是一个合适的选择,当多个线程共享访问公共收藏。像大多数其他并行采集的实现,这类不允许使用
null
元素。
该实现使用一个有效的非基于一个由Maged M. Michael和Michael L. Scott所描述的 Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue Algorithms阻塞算法。
迭代器返回的元素弱一致的,反映国家的队列在一些点或从迭代器的创作。他们不把ConcurrentModificationException
,并可同时进行其他操作。队列中包含的元素,因为创建迭代器将被精确地返回一次。
要小心的是,不像大多数集合的方法,size
不是常量时间的操作。由于这些队列的异步性质,确定当前元素的数量需要一个元素的遍历,如果这个集合在遍历过程中被修改,那么可能会报告不准确的结果。此外,大容量操作addAll
,removeAll
,retainAll
,containsAll
,equals
,和toArray
不保证是自动执行。例如,一个addAll
并发运行的操作一个迭代器可能会认为只有一些加入的元素。
这个类和它的迭代器实现所有的可选方法的Queue
和Iterator
接口。
内存一致性效果:与其他并发集合,在将对象放入一个ConcurrentLinkedQueue
happen-before行动从另一个线程的ConcurrentLinkedQueue
元素的访问和去除之前的线程的行为。
这个班的一员 Java Collections Framework。
Constructor and Description |
---|
ConcurrentLinkedQueue()
创建一个
ConcurrentLinkedQueue ,最初是空的。
|
ConcurrentLinkedQueue(Collection<? extends E> c)
创建一个
ConcurrentLinkedQueue 最初包含元素的集合,加入集合的迭代器遍历顺序。
|
Modifier and Type | Method and Description |
---|---|
boolean |
add(E e)
在这个队列的尾部插入指定的元素。
|
boolean |
addAll(Collection<? extends E> c)
追加指定集合的所有元素到这个队列的末尾,按他们的指定集合的迭代器返回。
|
boolean |
contains(Object o)
返回
true 如果此队列包含指定的元素。
|
boolean |
isEmpty()
返回
true 如果队列不包含元素。
|
Iterator<E> |
iterator()
在这个队列中的元素上返回一个正确的顺序。
|
boolean |
offer(E e)
在这个队列的尾部插入指定的元素。
|
E |
peek()
检索,但不删除,这个队列头,或返回
null 如果队列为空。
|
E |
poll()
检索并移除此队列的头,或返回
null 如果队列为空。
|
boolean |
remove(Object o)
从该队列中移除指定元素的一个实例,如果它是存在的。
|
int |
size()
返回此队列中的元素的数目。
|
Spliterator<E> |
spliterator()
返回队列中的元素在这一
Spliterator 。
|
Object[] |
toArray()
返回一个数组,包含这个队列中的所有元素,在适当的顺序。
|
<T> T[] |
toArray(T[] a)
返回一个包含此队列中所有元素的数组,在适当的顺序;返回的数组的运行时类型是指定的数组的运行时类型。
|
clear, element, remove
containsAll, removeAll, retainAll, toString
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
clear, containsAll, equals, hashCode, parallelStream, removeAll, removeIf, retainAll, stream
public ConcurrentLinkedQueue()
ConcurrentLinkedQueue
,最初是空的。
public ConcurrentLinkedQueue(Collection<? extends E> c)
ConcurrentLinkedQueue
最初包含元素的集合,加入集合的迭代器遍历顺序。
c
-最初包含元素的集合
NullPointerException
-如果指定集合或其任何元素都是空的
public boolean add(E e)
IllegalStateException
或返回
false
。
add
接口
Collection<E>
add
接口
Queue<E>
add
方法重写,继承类
AbstractQueue<E>
e
-元素添加
true
(由
Collection.add(E)
指定)
NullPointerException
-如果指定元素为null
public boolean offer(E e)
false
。
offer
接口
Queue<E>
e
-元素添加
true
(由
Queue.offer(E)
指定)
NullPointerException
-如果指定元素为null
public boolean isEmpty()
true
如果队列不包含元素。
isEmpty
接口
Collection<E>
isEmpty
方法重写,继承类
AbstractCollection<E>
true
如果队列不包含元素
public int size()
Integer.MAX_VALUE
元素,返回
请注意,与大多数集合不同,此方法不是一个常数时间操作。由于这些队列的异步性质,确定当前元素的当前数量需要一个O(n)遍历。此外,如果在该方法的执行过程中添加或删除元素,则返回的结果可能是不准确的。因此,这种方法通常是不是非常有用的并发应用程序。
Integer.MAX_VALUE
。
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()
返回的数组将是“安全”的,在这个队列中没有引用它的引用。(换句话说,这种方法必须分配一个新的数组)。因此,调用方可以自由修改返回的数组。
此方法作为基于数组和基于集合的原料药之间的桥梁。
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>
T
-数组的运行时类型包含集合
a
-进入队列的元素被存储数组,如果它足够大;否则,一个新的运行时类型相同的数组分配给这个目的
ArrayStoreException
-如果指定数组的运行时类型不是超队伍中每个元素运行时类型
NullPointerException
-如果指定的数组是空的
public Iterator<E> iterator()
返回的迭代器是weakly consistent。
iterator
接口
Iterable<E>
iterator
接口
Collection<E>
iterator
方法重写,继承类
AbstractCollection<E>
public Spliterator<E> spliterator()
Spliterator
。
返回的spliterator是weakly consistent。
报告的Spliterator
Spliterator.CONCURRENT
,Spliterator.ORDERED
,和Spliterator.NONNULL
。
spliterator
接口
Iterable<E>
spliterator
接口
Collection<E>
Spliterator
trySplit
允许有限的并行实现。
Spliterator
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.