|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.util.AbstractCollection<E> java.util.AbstractQueue<E> java.util.concurrent.ConcurrentLinkedQueue<E>
E
- 在此 collection 中保持的元素型別public class ConcurrentLinkedQueue<E>
一個基於連接節點的無界執行緒安全佇列。此佇列按照 FIFO(先進先出)原則對元素進行排序。佇列的頭部 是佇列中時間最長的元素。佇列的尾部 是佇列中時間最短的元素。新的元素插入到佇列的尾部,佇列獲取操作從佇列頭部獲得元素。當多個執行緒共享存取一個公共 collection 時,ConcurrentLinkedQueue 是一個恰當的選擇。此佇列不允許使用 null 元素。
此實作採用了有效的“無等待 (wait-free)”演算法,該演算法基於 Maged M. Michael 和 Michael L. Scott 合著的 Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue Algorithms 中描述的演算法。
需要小心的是,與大多數 collection 不同,size 方法不是 一個固定時間操作。由於這些佇列的非同步特性,確定當前元素的數量需要遍歷這些元素。
此類別及其迭代器實作了 Collection
和 Iterator
介面的所有可選 方法。
記憶體一致性效果:當存在其他共時 collection 時,將物件放入 ConcurrentLinkedQueue
之前的執行緒中的操作 happen-before 隨後通過另一執行緒從 ConcurrentLinkedQueue
存取或移除該元素的操作。
此類別是 Java Collections Framework 的成員。
建構子摘要 | |
---|---|
ConcurrentLinkedQueue()
創建一個最初為空的 ConcurrentLinkedQueue。 |
|
ConcurrentLinkedQueue(Collection<? extends E> c)
創建一個最初包含給定 collection 元素的 ConcurrentLinkedQueue,按照此 collection 迭代器的遍歷順序來添加元素。 |
方法摘要 | ||
---|---|---|
boolean |
add(E e)
將指定元素插入此佇列的尾部。 |
|
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()
返回此佇列中的元素數量。 |
|
Object[] |
toArray()
返回以恰當順序包含此佇列所有元素的陣列。 |
|
|
toArray(T[] a)
返回以恰當順序包含此佇列所有元素的陣列;返回陣列的運行時型別是指定陣列的運行時型別。 |
從類別 java.util.AbstractQueue 繼承的方法 |
---|
addAll, clear, element, remove |
從類別 java.util.AbstractCollection 繼承的方法 |
---|
containsAll, removeAll, retainAll, 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, removeAll, retainAll |
建構子詳細資訊 |
---|
public ConcurrentLinkedQueue()
public ConcurrentLinkedQueue(Collection<? extends E> c)
c
- 最初包含的元素 collection
NullPointerException
- 如果指定 collection 或其任何元素為 null方法詳細資訊 |
---|
public boolean add(E e)
Collection<E>
中的 add
Queue<E>
中的 add
AbstractQueue<E>
中的 add
o
- 要添加的元素
Collection.add(E)
的規定)
NullPointerException
- 如果指定元素為 nullpublic boolean offer(E e)
Queue<E>
中的 offer
e
- 要添加的元素
Queue.offer(E)
的規定)
NullPointerException
- 如果指定元素為 nullpublic E poll()
Queue
複製的描述
Queue<E>
中的 poll
public E peek()
Queue
複製的描述
Queue<E>
中的 peek
public boolean isEmpty()
Collection<E>
中的 isEmpty
AbstractCollection<E>
中的 isEmpty
public int size()
需要小心的是,與大多數 collection 不同,此方法不是 一個固定時間操作。由於這些佇列的非同步特性,確定當前的元素數需要進行一次花費 O(n) 時間的遍歷。
Collection<E>
中的 size
AbstractCollection<E>
中的 size
public boolean contains(Object o)
Collection<E>
中的 contains
AbstractCollection<E>
中的 contains
o
- 要檢查是否包含於此佇列的物件
public boolean remove(Object o)
Collection<E>
中的 remove
AbstractCollection<E>
中的 remove
o
- 將從此佇列中移除的元素(如果存在)
public Object[] toArray()
由於此佇列並不維護對返回陣列的任何參考,因而它將是「安全的」。(換句話說,此方法必須分派一個新陣列)。因此,調用者可以隨意修改返回的陣列。
此方法充當基於陣列的 API 與基於 collection 的 API 之間的橋樑。
Collection<E>
中的 toArray
AbstractCollection<E>
中的 toArray
public <T> T[] toArray(T[] a)
如果指定的陣列能容納佇列,並有剩餘的空間(即陣列的元素比佇列多),那麼會將緊接佇列尾部的元素設置為 null。
像 toArray()
方法一樣,此方法充當基於陣列的 API 與基於 collection 的 API 之間的橋樑。更進一步說,此方法允許對輸出陣列的運行時型別進行精確控制,在某些情況下,這可以用來節省分派開銷。
假定 x 是只包含字元串的一個已知佇列。以下程式碼用來將該佇列轉儲到一個新分派的 String 陣列:
String[] y = x.toArray(new String[0]);注意,toArray(new Object[0]) 和 toArray() 在功能上是相同的。
Collection<E>
中的 toArray
AbstractCollection<E>
中的 toArray
a
- 將用來存儲佇列元素的陣列(如果該陣列足夠大);否則,將為此分派一個具有相同運行時型別的新陣列
ArrayStoreException
- 如果指定陣列的運行時型別不是此佇列中每個元素的運行時型別的父級類別型
NullPointerException
- 如果指定陣列為 nullpublic Iterator<E> iterator()
ConcurrentModificationException
,並且可保證遍歷迭代器建構時存在的元素,此外還可能(但並不保證)反映建構後的所有修改。
Iterable<E>
中的 iterator
Collection<E>
中的 iterator
AbstractCollection<E>
中的 iterator
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。