|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
java.lang.Objectjava.util.AbstractCollection<E>
java.util.AbstractQueue<E>
java.util.concurrent.SynchronousQueue<E>
E - 此 collection 保持的元素型別public class SynchronousQueue<E>
一種阻塞佇列,其中每個插入操作必須等待另一個執行緒的對應移除操作 ,反之亦然。同步佇列沒有任何內部容量,甚至連一個佇列的容量都沒有。不能在同步佇列上進行 peek,因為僅在試圖要移除元素時,該元素才存在;除非另一個執行緒試圖移除某個元素,否則也不能(使用任何方法)插入元素;也不能迭代佇列,因為其中沒有元素可用於迭代。佇列的頭 是嘗試添加到佇列中的首個已排隊插入執行緒的元素;如果沒有這樣的已排隊執行緒,則沒有可用於移除的元素並且 poll() 將會返回 null。對於其他 Collection 方法(例如 contains),SynchronousQueue 作為一個空 collection。此佇列不允許 null 元素。
同步佇列類似於 CSP 和 Ada 中使用的 rendezvous 通道。它非常適合於傳遞性設計,在這種設計中,在一個執行緒中運行的物件要將某些資訊、事件或任務傳遞給在另一個執行緒中運行的物件,它就必須與該物件同步。
對於正在等待的生產者和使用者執行緒而言,此類別支持可選的公平排序策略。預設情況下不保證這種排序。但是,使用公平設置為 true 所建構的佇列可保證執行緒以 FIFO 的順序進行存取。
此類別及其迭代器實作 Collection 和 Iterator 介面的所有可選 方法。
此類別是 Java Collections Framework 的成員。
| 建構子摘要 | |
|---|---|
SynchronousQueue()
創建一個具有非公平存取策略的 SynchronousQueue。 |
|
SynchronousQueue(boolean fair)
創建一個具有指定公平策略的 SynchronousQueue。 |
|
| 方法摘要 | ||
|---|---|---|
void |
clear()
不執行任何操作。 |
|
boolean |
contains(Object o)
始終返回 false。 |
|
boolean |
containsAll(Collection<?> c)
除非給定 collection 為空,否則返回 false。 |
|
int |
drainTo(Collection<? super E> c)
移除此佇列中所有可用的元素,並將它們添加到給定 collection 中。 |
|
int |
drainTo(Collection<? super E> c,
int maxElements)
最多從此佇列中移除給定數量的可用元素,並將這些元素添加到給定 collection 中。 |
|
boolean |
isEmpty()
始終返回 true。 |
|
Iterator<E> |
iterator()
返回一個空迭代器,其中 hasNext 始終返回 false。 |
|
boolean |
offer(E e)
如果另一個執行緒正在等待以便接收指定元素,則將指定元素插入到此佇列。 |
|
boolean |
offer(E o,
long timeout,
TimeUnit unit)
將指定元素插入到此佇列,如有必要則等待指定的時間,以便另一個執行緒接收它。 |
|
E |
peek()
始終返回 null。 |
|
E |
poll()
如果另一個執行緒當前正要使用某個元素,則獲取並移除此佇列的頭。 |
|
E |
poll(long timeout,
TimeUnit unit)
獲取並移除此佇列的頭,如有必要則等待指定的時間,以便另一個執行緒插入它。 |
|
void |
put(E o)
將指定元素添加到此佇列,如有必要則等待另一個執行緒接收它。 |
|
int |
remainingCapacity()
始終返回 0。 |
|
boolean |
remove(Object o)
始終返回 false。 |
|
boolean |
removeAll(Collection<?> c)
始終返回 false。 |
|
boolean |
retainAll(Collection<?> c)
始終返回 false。 |
|
int |
size()
始終返回 0。 |
|
E |
take()
獲取並移除此佇列的頭,如有必要則等待另一個執行緒插入它。 |
|
Object[] |
toArray()
返回一個 0 長度的陣列。 |
|
|
toArray(T[] a)
將指定陣列的第 0 個元素設置為 null(如果該陣列有非 0 的長度)並返回它。 |
|
| 從類別 java.util.AbstractQueue 繼承的方法 |
|---|
add, addAll, element, remove |
| 從類別 java.util.AbstractCollection 繼承的方法 |
|---|
toString |
| 從類別 java.lang.Object 繼承的方法 |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| 從介面 java.util.concurrent.BlockingQueue 繼承的方法 |
|---|
add |
| 從介面 java.util.Queue 繼承的方法 |
|---|
element, remove |
| 從介面 java.util.Collection 繼承的方法 |
|---|
addAll, equals, hashCode |
| 建構子詳細資訊 |
|---|
public SynchronousQueue()
public SynchronousQueue(boolean fair)
fair - 如果為 true,則等待執行緒以 FIFO 的順序競爭存取;否則順序是未指定的。| 方法詳細資訊 |
|---|
public void put(E o)
throws InterruptedException
BlockingQueue<E> 中的 puto - 要添加的元素
InterruptedException - 如果在等待時被中斷
NullPointerException - 如果指定元素為 null
public boolean offer(E o,
long timeout,
TimeUnit unit)
throws InterruptedException
BlockingQueue<E> 中的 offero - 要添加的元素timeout - 放棄之前等待的時間長度,以 unit 為時間單位unit - 確定如何解釋 timeout 參數的 TimeUnit
InterruptedException - 如果在等待時被中斷
NullPointerException - 如果指定元素為 nullpublic boolean offer(E e)
BlockingQueue<E> 中的 offerQueue<E> 中的 offere - 要添加的元素
NullPointerException - 如果指定元素 null
public E take()
throws InterruptedException
BlockingQueue<E> 中的 takeInterruptedException - 如果在等待時被中斷
public E poll(long timeout,
TimeUnit unit)
throws InterruptedException
BlockingQueue<E> 中的 polltimeout - 放棄之前要等待的時間長度,用 unit 的時間單位表示unit - 確定如何解釋 timeout 參數的 TimeUnit
InterruptedException - 如果在等待時被中斷public E poll()
Queue<E> 中的 pollpublic boolean isEmpty()
Collection<E> 中的 isEmptyAbstractCollection<E> 中的 isEmptypublic int size()
Collection<E> 中的 sizeAbstractCollection<E> 中的 sizepublic int remainingCapacity()
BlockingQueue<E> 中的 remainingCapacitypublic void clear()
Collection<E> 中的 clearAbstractQueue<E> 中的 clearpublic boolean contains(Object o)
Collection<E> 中的 containsBlockingQueue<E> 中的 containsAbstractCollection<E> 中的 containso - 元素
public boolean remove(Object o)
Collection<E> 中的 removeBlockingQueue<E> 中的 removeAbstractCollection<E> 中的 removeo - 要移除的元素
public boolean containsAll(Collection<?> c)
Collection<E> 中的 containsAllAbstractCollection<E> 中的 containsAllc - collection
AbstractCollection.contains(Object)public boolean removeAll(Collection<?> c)
Collection<E> 中的 removeAllAbstractCollection<E> 中的 removeAllc - collection
AbstractCollection.remove(Object),
AbstractCollection.contains(Object)public boolean retainAll(Collection<?> c)
Collection<E> 中的 retainAllAbstractCollection<E> 中的 retainAllc - collection
AbstractCollection.remove(Object),
AbstractCollection.contains(Object)public E peek()
Queue<E> 中的 peekpublic Iterator<E> iterator()
Iterable<E> 中的 iteratorCollection<E> 中的 iteratorAbstractCollection<E> 中的 iteratorpublic Object[] toArray()
Collection<E> 中的 toArrayAbstractCollection<E> 中的 toArraypublic <T> T[] toArray(T[] a)
Collection<E> 中的 toArrayAbstractCollection<E> 中的 toArraya - 陣列
NullPointerException - 如果指定的陣列為 nullpublic int drainTo(Collection<? super E> c)
BlockingQueue 複製的描述
BlockingQueue<E> 中的 drainToc - 接收傳輸元素的 collection
UnsupportedOperationException - 如果指定 collection 不支持添加元素
ClassCastException - 如果此佇列元素的類別不允許將其添加到指定 collection
NullPointerException - 如果指定 collection 為 null
IllegalArgumentException - 如果指定 collection 是此佇列,或者此佇列元素的某些屬性不允許將其添加到指定 collection
public int drainTo(Collection<? super E> c,
int maxElements)
BlockingQueue 複製的描述
BlockingQueue<E> 中的 drainToc - 接收傳輸元素的 collectionmaxElements - 傳輸元素的最大數量
UnsupportedOperationException - 如果指定 collection 不支持添加元素
ClassCastException - 如果此佇列元素的類別不允許將其添加到指定 collection
NullPointerException - 如果指定 collection 為 null
IllegalArgumentException - 如果指定 collection 是此佇列,或者此佇列元素的某些屬性不允許將其添加到指定 collection
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。