|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.util.AbstractCollection<E> java.util.AbstractQueue<E> java.util.concurrent.ArrayBlockingQueue<E>
E
- 在此 collection 中保持的元素型別public class ArrayBlockingQueue<E>
一個由陣列支持的有界阻塞佇列。此佇列按 FIFO(先進先出)原則對元素進行排序。佇列的頭部 是在佇列中存在時間最長的元素。佇列的尾部 是在佇列中存在時間最短的元素。新元素插入到佇列的尾部,佇列獲取操作則是從佇列頭部開始獲得元素。
這是一個典型的“有界快取記憶體區”,固定大小的陣列在其中保持生產者插入的元素和使用者提取的元素。一旦創建了這樣的快取記憶體區,就不能再增加其容量。試圖向已滿佇列中放入元素會導致操作受阻塞;試圖從空佇列中提取元素將導致類似阻塞。
此類別支持對等待的生產者執行緒和使用者執行緒進行排序的可選公平策略。預設情況下,不保證是這種排序。然而,通過將公平性 (fairness) 設置為 true 而建構的佇列允許按照 FIFO 順序存取執行緒。公平性通常會降低吞吐量,但也減少了可變性和避免了“不平衡性”。
此類別及其迭代器實作了 Collection
和 Iterator
介面的所有可選 方法。
此類別是 Java Collections Framework 的成員。
建構子摘要 | |
---|---|
ArrayBlockingQueue(int capacity)
創建一個帶有給定的(固定)容量和預設存取策略的 ArrayBlockingQueue。 |
|
ArrayBlockingQueue(int capacity,
boolean fair)
創建一個具有給定的(固定)容量和指定存取策略的 ArrayBlockingQueue。 |
|
ArrayBlockingQueue(int capacity,
boolean fair,
Collection<? extends E> c)
創建一個具有給定的(固定)容量和指定存取策略的 ArrayBlockingQueue,它最初包含給定 collection 的元素,並以 collection 迭代器的遍歷順序添加元素。 |
方法摘要 | ||
---|---|---|
boolean |
add(E e)
將指定的元素插入到此佇列的尾部(如果立即可行且不會超過該佇列的容量),在成功時返回 true,如果此佇列已滿,則拋出 IllegalStateException。 |
|
void |
clear()
自動移除此佇列中的所有元素。 |
|
boolean |
contains(Object o)
如果此佇列包含指定的元素,則返回 true。 |
|
int |
drainTo(Collection<? super E> c)
移除此佇列中所有可用的元素,並將它們添加到給定 collection 中。 |
|
int |
drainTo(Collection<? super E> c,
int maxElements)
最多從此佇列中移除給定數量的可用元素,並將這些元素添加到給定 collection 中。 |
|
Iterator<E> |
iterator()
返回在此佇列中的元素上按適當順序進行迭代的迭代器。 |
|
boolean |
offer(E e)
將指定的元素插入到此佇列的尾部(如果立即可行且不會超過該佇列的容量),在成功時返回 true,如果此佇列已滿,則返回 false。 |
|
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()
返回在無阻塞的理想情況下(不存在記憶體或資源約束)此佇列能接受的其他元素數量。 |
|
boolean |
remove(Object o)
從此佇列中移除指定元素的單個實例(如果存在)。 |
|
int |
size()
返回此佇列中元素的數量。 |
|
E |
take()
獲取並移除此佇列的頭部,在元素變得可用之前一直等待(如果有必要)。 |
|
Object[] |
toArray()
返回一個按適當順序包含此佇列中所有元素的陣列。 |
|
|
toArray(T[] a)
返回一個按適當順序包含此佇列中所有元素的陣列;返回陣列的運行時型別是指定陣列的運行時型別。 |
|
String |
toString()
返回此 collection 的字元串表示形式。 |
從類別 java.util.AbstractQueue 繼承的方法 |
---|
addAll, element, remove |
從類別 java.util.AbstractCollection 繼承的方法 |
---|
containsAll, isEmpty, removeAll, retainAll |
從類別 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
從介面 java.util.Queue 繼承的方法 |
---|
element, remove |
從介面 java.util.Collection 繼承的方法 |
---|
addAll, containsAll, equals, hashCode, isEmpty, removeAll, retainAll |
建構子詳細資訊 |
---|
public ArrayBlockingQueue(int capacity)
capacity
- 此佇列的容量
IllegalArgumentException
- 如果 capacity 小於 1public ArrayBlockingQueue(int capacity, boolean fair)
capacity
- 此佇列的容量fair
- 如果為 true,則按照 FIFO 順序存取插入或移除時受阻塞執行緒的佇列;如果為 false,則存取順序是不確定的。
IllegalArgumentException
- 如果 capacity 小於 1public ArrayBlockingQueue(int capacity, boolean fair, Collection<? extends E> c)
capacity
- 此佇列的容量fair
- 如果為 true,則按照 FIFO 順序存取插入或移除時受阻塞執行緒的佇列;如果為 false,則存取順序是不確定的。c
- 最初要包含的元素的 collection
IllegalArgumentException
- 如果 capacity 小於 c.size(),或者小於 1
NullPointerException
- 如果指定 collection 或任何其元素為 null方法詳細資訊 |
---|
public boolean add(E e)
Collection<E>
中的 add
BlockingQueue<E>
中的 add
Queue<E>
中的 add
AbstractQueue<E>
中的 add
e
- 要添加的元素
Collection.add(E)
的規定)
IllegalStateException
- 如果此佇列已滿
NullPointerException
- 如果指定的元素為 nullpublic boolean offer(E e)
add(E)
方法,後者可能無法插入元素,而只是拋出一個異常。
BlockingQueue<E>
中的 offer
Queue<E>
中的 offer
e
- 要添加的元素
NullPointerException
- 如果指定的元素為 nullpublic void put(E e) throws InterruptedException
BlockingQueue<E>
中的 put
e
- 要添加的元素
InterruptedException
- 如果在等待時被中斷
NullPointerException
- 如果指定元素為 nullpublic boolean offer(E e, long timeout, TimeUnit unit) throws InterruptedException
BlockingQueue<E>
中的 offer
e
- 要添加的元素timeout
- 放棄之前等待的時間長度,以 unit 為時間單位unit
- 確定如何解釋 timeout 參數的 TimeUnit
InterruptedException
- 如果在等待時被中斷
NullPointerException
- 如果指定元素為 nullpublic E poll()
Queue
複製的描述
Queue<E>
中的 poll
public E take() throws InterruptedException
BlockingQueue
複製的描述
BlockingQueue<E>
中的 take
InterruptedException
- 如果在等待時被中斷public E poll(long timeout, TimeUnit unit) throws InterruptedException
BlockingQueue
複製的描述
BlockingQueue<E>
中的 poll
timeout
- 放棄之前要等待的時間長度,用 unit 的時間單位表示unit
- 確定如何解釋 timeout 參數的 TimeUnit
InterruptedException
- 如果在等待時被中斷public E peek()
Queue
複製的描述
Queue<E>
中的 peek
public int size()
Collection<E>
中的 size
AbstractCollection<E>
中的 size
public int remainingCapacity()
注意,不能 總是通過檢查 remainingCapacity 來判斷嘗試插入元素能否成功,因為可能出現這樣的情況:另一個執行緒將插入或移除一個元素。
BlockingQueue<E>
中的 remainingCapacity
public boolean remove(Object o)
Collection<E>
中的 remove
BlockingQueue<E>
中的 remove
AbstractCollection<E>
中的 remove
o
- 要從此佇列中移除的元素(如果存在)
public boolean contains(Object o)
Collection<E>
中的 contains
BlockingQueue<E>
中的 contains
AbstractCollection<E>
中的 contains
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 String toString()
AbstractCollection
複製的描述String.valueOf(Object)
可以將元素轉換成字元串。
AbstractCollection<E>
中的 toString
public void clear()
Collection<E>
中的 clear
AbstractQueue<E>
中的 clear
public int drainTo(Collection<? super E> c)
BlockingQueue
複製的描述
BlockingQueue<E>
中的 drainTo
c
- 接收傳輸元素的 collection
UnsupportedOperationException
- 如果指定 collection 不支持添加元素
ClassCastException
- 如果此佇列元素的類別不允許將其添加到指定 collection
NullPointerException
- 如果指定 collection 為 null
IllegalArgumentException
- 如果指定 collection 是此佇列,或者此佇列元素的某些屬性不允許將其添加到指定 collectionpublic int drainTo(Collection<? super E> c, int maxElements)
BlockingQueue
複製的描述
BlockingQueue<E>
中的 drainTo
c
- 接收傳輸元素的 collectionmaxElements
- 傳輸元素的最大數量
UnsupportedOperationException
- 如果指定 collection 不支持添加元素
ClassCastException
- 如果此佇列元素的類別不允許將其添加到指定 collection
NullPointerException
- 如果指定 collection 為 null
IllegalArgumentException
- 如果指定 collection 是此佇列,或者此佇列元素的某些屬性不允許將其添加到指定 collectionpublic 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。