|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
E - 保存在此 collection 中的元素型別public interface BlockingDeque<E>
支持兩個附加操作的 Queue,這兩個操作是:獲取元素時等待雙端佇列變為非空(null);存儲元素時等待雙端佇列中的空間變得可用。
BlockingDeque 方法有四種形式,使用不同的方式處理無法立即滿足但在將來某一時刻可能滿足的操作:第一種方式拋出異常;第二種返回一個特殊值(null 或 false,具體取決於操作);第三種無限期阻塞當前執行緒,直至操作成功;第四種只阻塞給定的最大時間,然後放棄。下表中總結了這些方法:
| 第一個元素(頭部) | ||||
| 拋出異常 | 特殊值 | 阻塞 | 逾時期 | |
| 插入 | addFirst(e) |
offerFirst(e) |
putFirst(e) |
offerFirst(e, time, unit) |
| 移除 | removeFirst() |
pollFirst() |
takeFirst() |
pollFirst(time, unit) |
| 檢查 | getFirst() |
peekFirst() |
不適用 | 不適用 |
| 最後一個元素(尾部) | ||||
| 拋出異常 | 特殊值 | 阻塞 | 逾時期 | |
| 插入 | addLast(e) |
offerLast(e) |
putLast(e) |
offerLast(e, time, unit) |
| 移除 | removeLast() |
pollLast() |
takeLast() |
pollLast(time, unit) |
| 檢查 | getLast() |
peekLast() |
不適用 | 不適用 |
像所有 BlockingQueue 一樣,BlockingDeque 是執行緒安全的,但不允許 null 元素,並且可能有(也可能沒有)容量限制。
BlockingDeque 實作可以直接用作 FIFO BlockingQueue。繼承自 BlockingQueue 介面的方法精確地等效於下表中描述的 BlockingDeque 方法:
| BlockingQueue 方法 | 等效的 BlockingDeque 方法 |
| 插入 | |
add(e) |
addLast(e) |
offer(e) |
offerLast(e) |
put(e) |
putLast(e) |
offer(e, time, unit) |
offerLast(e, time, unit) |
| 移除 | |
remove() |
removeFirst() |
poll() |
pollFirst() |
take() |
takeFirst() |
poll(time, unit) |
pollFirst(time, unit) |
| 檢查 | |
element() |
getFirst() |
peek() |
peekFirst() |
記憶體一致性效果:當存在其他共時 collection 時,將物件放入 BlockingDeque 之前的執行緒中的操作 happen-before 隨後通過另一執行緒從 BlockingDeque 中存取或移除該元素的操作。
此介面是 Java Collections Framework 的成員。
| 方法摘要 | |
|---|---|
boolean |
add(E e)
Inserts the 如果立即可行且不違反容量限制,則將指定的元素插入此雙端佇列表示的佇列中(即此雙端佇列的尾部),並在成功時返回 true;如果當前沒有空間可用,則拋出 IllegalStateException。 |
void |
addFirst(E e)
如果立即可行且不違反容量限制,則將指定的元素插入此雙端佇列的開頭;如果當前沒有空間可用,則拋出 IllegalStateException。 |
void |
addLast(E e)
如果立即可行且不違反容量限制,則將指定的元素插入此雙端佇列的末尾;如果當前沒有空間可用,則拋出 IllegalStateException。 |
boolean |
contains(Object o)
如果此雙端佇列包含指定的元素,則返回 true。 |
E |
element()
獲取但不移除此雙端佇列表示的佇列的頭部(即此雙端佇列的第一個元素)。 |
Iterator<E> |
iterator()
返回在此雙端佇列中的元素上以恰當順序進行迭代的迭代器。 |
boolean |
offer(E e)
如果立即可行且不違反容量限制,則將指定的元素插入此雙端佇列表示的佇列中(即此雙端佇列的尾部),並在成功時返回 true;如果當前沒有空間可用,則返回 false。 |
boolean |
offer(E e,
long timeout,
TimeUnit unit)
將指定的元素插入此雙端佇列表示的佇列中(即此雙端佇列的尾部),必要時將在指定的等待時間內一直等待可用空間。 |
boolean |
offerFirst(E e)
如果立即可行且不違反容量限制,則將指定的元素插入此雙端佇列的開頭,並在成功時返回 true;如果當前沒有空間可用,則返回 false。 |
boolean |
offerFirst(E e,
long timeout,
TimeUnit unit)
將指定的元素插入此雙端佇列的開頭,必要時將在指定的等待時間內等待可用空間。 |
boolean |
offerLast(E e)
如果立即可行且不違反容量限制,則將指定的元素插入此雙端佇列的末尾,並在成功時返回 true;如果當前沒有空間可用,則返回 false。 |
boolean |
offerLast(E e,
long timeout,
TimeUnit unit)
將指定的元素插入此雙端佇列的末尾,必要時將在指定的等待時間內等待可用空間。 |
E |
peek()
獲取但不移除此雙端佇列表示的佇列的頭部(即此雙端佇列的第一個元素);如果此雙端佇列為空,則返回 null。 |
E |
poll()
獲取並移除此雙端佇列表示的佇列的頭部(即此雙端佇列的第一個元素);如果此雙端佇列為空,則返回 null。 |
E |
poll(long timeout,
TimeUnit unit)
獲取並移除此雙端佇列表示的佇列的頭部(即此雙端佇列的第一個元素),如有必要將在指定的等待時間內等待可用元素。 |
E |
pollFirst(long timeout,
TimeUnit unit)
獲取並移除此雙端佇列的第一個元素,必要時將在指定的等待時間等待可用元素。 |
E |
pollLast(long timeout,
TimeUnit unit)
獲取並移除此雙端佇列的最後一個元素,必要時將在指定的等待時間內等待可用元素。 |
void |
push(E e)
將元素推入此雙端佇列表示的堆疊(stack)空間。 |
void |
put(E e)
將指定的元素插入此雙端佇列表示的佇列中(即此雙端佇列的尾部),必要時將一直等待可用空間。 |
void |
putFirst(E e)
將指定的元素插入此雙端佇列的開頭,必要時將一直等待可用空間。 |
void |
putLast(E e)
將指定的元素插入此雙端佇列的末尾,必要時將一直等待可用空間。 |
E |
remove()
獲取並移除此雙端佇列表示的佇列的頭部(即此雙端佇列的第一個元素)。 |
boolean |
remove(Object o)
從此雙端佇列移除第一次出現的指定元素。 |
boolean |
removeFirstOccurrence(Object o)
從此雙端佇列移除第一次出現的指定元素。 |
boolean |
removeLastOccurrence(Object o)
從此雙端佇列移除最後一次出現的指定元素。 |
int |
size()
返回此雙端佇列中的元素數。 |
E |
take()
獲取並移除此雙端佇列表示的佇列的頭部(即此雙端佇列的第一個元素),必要時將一直等待可用元素。 |
E |
takeFirst()
獲取並移除此雙端佇列的第一個元素,必要時將一直等待可用元素。 |
E |
takeLast()
獲取並移除此雙端佇列的最後一個元素,必要時將一直等待可用元素。 |
| 從介面 java.util.concurrent.BlockingQueue 繼承的方法 |
|---|
drainTo, drainTo, remainingCapacity |
| 從介面 java.util.Deque 繼承的方法 |
|---|
descendingIterator, getFirst, getLast, peekFirst, peekLast, pollFirst, pollLast, pop, removeFirst, removeLast |
| 從介面 java.util.Collection 繼承的方法 |
|---|
addAll, clear, containsAll, equals, hashCode, isEmpty, removeAll, retainAll, toArray, toArray |
| 方法詳細資訊 |
|---|
void addFirst(E e)
offerFirst。
Deque<E> 中的 addFirste - 要添加的元素
IllegalStateException - 如果此時由於容量限制而無法添加元素
ClassCastException - 如果指定元素的類別不允許將它添加此雙端佇列
NullPointerException - 如果指定的元素為 null
IllegalArgumentException - 如果指定元素的某些屬性不允許將它添加到此雙端佇列void addLast(E e)
offerLast。
Deque<E> 中的 addLaste - 要添加的元素
IllegalStateException - 如果此時由於容量限制而無法添加元素
ClassCastException - 如果指定元素的類別不允許將它添加此雙端佇列
NullPointerException - 如果指定的元素為 null
IllegalArgumentException - 如果指定元素的某些屬性不允許將它添加到此雙端佇列boolean offerFirst(E e)
addFirst 方法,後者可能無法插入元素,而只是拋出一個異常。
Deque<E> 中的 offerFirste - 要添加的元素
ClassCastException - 如果指定元素的類別不允許將它添加到此雙端佇列
NullPointerException - 如果指定的元素為 null
IllegalArgumentException - 如果指定元素的某些屬性不允許將它添加到此雙端佇列boolean offerLast(E e)
addLast 方法,後者可能無法插入元素,而只是拋出一個異常。
Deque<E> 中的 offerLaste - 要添加的元素
ClassCastException - 如果指定元素的類別不允許將它添加到此雙端佇列
NullPointerException - 如果指定的元素為 null
IllegalArgumentException - 如果指定元素的某些屬性不允許將它添加到此雙端佇列
void putFirst(E e)
throws InterruptedException
e - 要添加的元素
InterruptedException - 如果在等待時被中斷
ClassCastException - 如果指定元素的類別不允許它被添加到此雙端佇列
NullPointerException - 如果指定的元素為 null
IllegalArgumentException - 如果指定元素的某個屬性不允許它被添加到此雙端佇列
void putLast(E e)
throws InterruptedException
e - 要添加的元素
InterruptedException - 如果在等待時被中斷
ClassCastException - 如果指定元素的類別不允許它被添加到此雙端佇列
NullPointerException - 如果指定的元素為 null
IllegalArgumentException - 如果指定元素的某個屬性不允許它被添加到此雙端佇列
boolean offerFirst(E e,
long timeout,
TimeUnit unit)
throws InterruptedException
e - 要添加的元素timeout - 放棄之前等待的時間長度,以 unit 為時間單位unit - 確定如何解釋 timeout 參數的 TimeUnit
InterruptedException - 如果在等待時被中斷
ClassCastException - 如果指定元素的類別不允許它被添加到此雙端佇列
NullPointerException - 如果指定的元素為 null
IllegalArgumentException - 如果指定元素的某個屬性不允許它被添加到此雙端佇列
boolean offerLast(E e,
long timeout,
TimeUnit unit)
throws InterruptedException
e - 要添加的元素timeout - 放棄之前等待的時間長度,以 unit 為時間單位unit - 確定如何解釋 timeout 參數的 TimeUnit
InterruptedException - 如果在等待時被中斷
ClassCastException - 如果指定元素的類別不允許它被添加到此雙端佇列
NullPointerException - 如果指定的元素為 null
IllegalArgumentException - 如果指定元素的某個屬性不允許它被添加到此雙端佇列
E takeFirst()
throws InterruptedException
InterruptedException - 如果在等待時被中斷
E takeLast()
throws InterruptedException
InterruptedException - 如果在等待時被中斷
E pollFirst(long timeout,
TimeUnit unit)
throws InterruptedException
timeout - 放棄之前等待的時間長度,以 unit 為時間單位unit - 確定如何解釋 timeout 參數的 TimeUnit
InterruptedException - 如果在等待時被中斷
E pollLast(long timeout,
TimeUnit unit)
throws InterruptedException
timeout - 放棄之前等待的時間長度,以 unit 為時間單位unit - 確定如何解釋 timeout 參數的 TimeUnit
InterruptedException - 如果在等待時被中斷boolean removeFirstOccurrence(Object o)
Deque<E> 中的 removeFirstOccurrenceo - 要從此雙端佇列移除的元素(如果存在)
ClassCastException - 如果指定元素的類別與此雙端佇列不相容(可選)
NullPointerException - 如果指定的元素為 null(可選)boolean removeLastOccurrence(Object o)
Deque<E> 中的 removeLastOccurrenceo - 要從此雙端佇列移除的元素(如果存在)
ClassCastException - 如果指定元素的類別與此雙端佇列不相容(可選)
NullPointerException - 如果指定的元素為 null(可選)boolean add(E e)
offer。
此方法等效於 addLast。
BlockingQueue<E> 中的 addCollection<E> 中的 addDeque<E> 中的 addQueue<E> 中的 adde - 要添加的元素
Collection.add(E) 的規定)
IllegalStateException - 如果由於容量限制此時不能添加該元素
ClassCastException - 如果指定元素的類別不允許它被添加到此雙端佇列
NullPointerException - 如果指定的元素為 null
IllegalArgumentException - 如果指定元素的某個屬性不允許它被添加到此雙端佇列boolean offer(E e)
add(E) 方法,後者可能無法插入元素,而只是拋出一個異常。
此方法等效於 offerLast。
BlockingQueue<E> 中的 offerDeque<E> 中的 offerQueue<E> 中的 offere - 要添加的元素
ClassCastException - 如果指定元素的類別不允許它被添加到此雙端佇列
NullPointerException - 如果指定的元素為 null
IllegalArgumentException - 如果指定元素的某個屬性不允許它被添加到此雙端佇列
void put(E e)
throws InterruptedException
此方法等效於 putLast。
BlockingQueue<E> 中的 pute - 要添加的元素
InterruptedException - 如果在等待時被中斷
ClassCastException - 如果指定元素的類別不允許它被添加到此雙端佇列
NullPointerException - 如果指定的元素為 null
IllegalArgumentException - 如果指定元素的某個屬性不允許它被添加到此雙端佇列
boolean offer(E e,
long timeout,
TimeUnit unit)
throws InterruptedException
此方法等效於 offerLast。
BlockingQueue<E> 中的 offere - 要添加的元素timeout - 放棄之前等待的時間長度,以 unit 為時間單位unit - 確定如何解釋 timeout 參數的 TimeUnit
InterruptedException - 如果在等待時被中斷
ClassCastException - 如果指定元素的類別不允許它被添加到此雙端佇列
NullPointerException - 如果指定的元素為 null
IllegalArgumentException - 如果指定元素的某個屬性不允許它被添加到此雙端佇列E remove()
poll 的不同之處在於:如果此雙端佇列為空,它會拋出一個異常。
此方法等效於 removeFirst。
Deque<E> 中的 removeQueue<E> 中的 removeNoSuchElementException - 如果此雙端佇列為空E poll()
此方法等效於 Deque.pollFirst()。
Deque<E> 中的 pollQueue<E> 中的 poll
E take()
throws InterruptedException
此方法等效於 takeFirst。
BlockingQueue<E> 中的 takeInterruptedException - 如果在等待時被中斷
E poll(long timeout,
TimeUnit unit)
throws InterruptedException
此方法等效於 pollFirst。
BlockingQueue<E> 中的 polltimeout - 放棄之前要等待的時間長度,用 unit 的時間單位表示unit - 確定如何解釋 timeout 參數的 TimeUnit
InterruptedException - 如果在等待時被中斷E element()
peek 的不同之處在於:如果此雙端佇列為空,它會拋出一個異常。
此方法等效於 getFirst。
Deque<E> 中的 elementQueue<E> 中的 elementNoSuchElementException - 如果此雙端佇列為空E peek()
此方法等效於 peekFirst。
Deque<E> 中的 peekQueue<E> 中的 peekboolean remove(Object o)
此方法等效於 removeFirstOccurrence。
BlockingQueue<E> 中的 removeCollection<E> 中的 removeDeque<E> 中的 removeo - 要從此雙端佇列移除的元素(如果存在)
ClassCastException - 如果指定元素的類別與此雙端佇列不相容(可選)
NullPointerException - 如果指定的元素為 null(可選)boolean contains(Object o)
BlockingQueue<E> 中的 containsCollection<E> 中的 containsDeque<E> 中的 containso - 檢查是否包含在此雙端佇列中的物件
ClassCastException - 如果指定元素的類別與此雙端佇列不相容(可選)
NullPointerException - 如果指定的元素為 null(可選)int size()
Collection<E> 中的 sizeDeque<E> 中的 sizeIterator<E> iterator()
Collection<E> 中的 iteratorDeque<E> 中的 iteratorIterable<E> 中的 iteratorvoid push(E e)
此方法等效於 addFirst。
Deque<E> 中的 pushe - 要推入的元素
IllegalStateException - 如果此時由於容量限制而無法添加元素
ClassCastException - 如果指定元素的類別不允許將它添加此雙端佇列
NullPointerException - 如果指定的元素為 null
IllegalArgumentException - 如果指定元素的某些屬性不允許將它添加到此雙端佇列
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。