E - このコレクション内に保持される要素の型public class SynchronousQueue<E> extends AbstractQueue<E> implements BlockingQueue<E>, Serializable
peekを実行することはできません。別のスレッドが削除を試みていないかぎり、どのメソッドを使用しても要素を挿入することはできません。反復するものが存在しないため、反復は実行できません。キューの先頭は、挿入処理スレッドがキューに追加しようとする、最初にキューに入れられた要素です。そのようなキューに入れられたスレッドが存在しない場合は、削除できる要素はなく、poll()はnullを返します。他のCollectionメソッド(containsなど)の目的のために、SynchronousQueueは空のコレクションとして機能します。このキューでは、null要素は許可されません。
同期キューは、CSPおよびAdaで使用されるランデブー・チャネルに似ています。これらはハンドオフ設計に最適です。ハンドオフ設計では、情報、イベント、またはタスクを渡すために、あるスレッドで実行中のオブジェクトを別のスレッドで実行中のオブジェクトと同期させる必要があります。
このクラスでは、待機中のプロデューサおよびコンシューマ・スレッドの順序付けのためのオプションの公平性ポリシーをサポートします。デフォルトでは、この順序付けは保証されていません。ただし、公平性をtrueに設定して構築されたキューでは、スレッドがFIFOの順序でアクセスすることが許可されます。
このクラスとそのイテレータは、CollectionおよびIteratorインタフェースの任意メソッドすべてを実装します。
このクラスは、Java Collections Frameworkのメンバーです。
| コンストラクタと説明 |
|---|
SynchronousQueue()
不公平アクセス・ポリシーで
SynchronousQueueを作成します。 |
SynchronousQueue(boolean fair)
指定された公平性ポリシーで
SynchronousQueueを作成します。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
void |
clear()
何も行いません。
|
boolean |
contains(Object o)
常に
falseを返します。 |
boolean |
containsAll(Collection<?> c)
指定されたコレクションが空でないかぎり、
falseを返します。 |
int |
drainTo(Collection<? super E> c)
このキューから利用可能なすべての要素を削除し、それらを指定されたコレクションに追加します。
|
int |
drainTo(Collection<? super E> c, int maxElements)
指定された数以内の利用可能な要素をこのキューから削除し、指定されたコレクションに追加します。
|
boolean |
isEmpty()
常に
trueを返します。 |
Iterator<E> |
iterator()
常に
hasNextがfalseを返す空のイテレータを返します。 |
boolean |
offer(E e)
別のスレッドが要素を受け取るのを待機している場合、その要素をこのキューに追加します。
|
boolean |
offer(E e, long timeout, TimeUnit unit)
指定された要素をこのキューに挿入します。必要に応じて、指定された待機時間まで別のスレッドが要素を受け取るのを待機します。
|
E |
peek()
常に
nullを返します。 |
E |
poll()
別のスレッドが現在要素を利用可能にしている場合は、キューの先頭を取得して削除します。
|
E |
poll(long timeout, TimeUnit unit)
このキューの先頭を取得および削除します。必要に応じて、指定された待機時間まで別のスレッドがその要素を挿入するのを待機します。
|
void |
put(E e)
指定された要素をこのキューに追加します。必要に応じて、別のスレッドが要素を受け取るまで待機します。
|
int |
remainingCapacity()
常にゼロを返します。
|
boolean |
remove(Object o)
常に
falseを返します。 |
boolean |
removeAll(Collection<?> c)
常に
falseを返します。 |
boolean |
retainAll(Collection<?> c)
常に
falseを返します。 |
int |
size()
常にゼロを返します。
|
Spliterator<E> |
spliterator()
Spliterator.trySplit()を呼び出すと常にnullが返される空のスプリッテレータを返します。 |
E |
take()
このキューの先頭を取得して削除します。必要に応じて、別のスレッドがその要素を挿入するまで待機します。
|
Object[] |
toArray()
長さがゼロの配列を返します。
|
<T> T[] |
toArray(T[] a)
配列の長さがゼロでない場合に、指定された配列のゼロ番目の要素を
nullに設定して返します。 |
add, addAll, element, removetoStringclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitaddaddAll, equals, hashCode, parallelStream, removeIf, streampublic SynchronousQueue()
SynchronousQueueを作成します。public SynchronousQueue(boolean fair)
SynchronousQueueを作成します。fair - trueの場合、待機中のスレッドはFIFOの順序でアクセスが決定される。それ以外の場合、順序は指定されない。public void put(E e) throws InterruptedException
put、インタフェース: BlockingQueue<E>e - 追加する要素InterruptedException - 待機中に割込みが発生した場合NullPointerException - 指定された要素がnullである場合public boolean offer(E e, long timeout, TimeUnit unit) throws InterruptedException
offer、インタフェース: BlockingQueue<E>e - 追加する要素timeout - 処理を中止するまでの待機時間。単位はunitunit - timeoutパラメータの解釈方法を決定するTimeUnittrue。コンシューマが出現する前に指定された待機時間が経過した場合はfalseInterruptedException - 待機中に割込みが発生した場合NullPointerException - 指定された要素がnullである場合public boolean offer(E e)
offer、インタフェース: BlockingQueue<E>offer、インタフェース: Queue<E>e - 追加する要素true、それ以外の場合はfalseNullPointerException - 指定された要素がnullである場合public E take() throws InterruptedException
take、インタフェース: BlockingQueue<E>InterruptedException - 待機中に割込みが発生した場合public E poll(long timeout, TimeUnit unit) throws InterruptedException
poll、インタフェース: BlockingQueue<E>timeout - 処理を中止するまでの待機時間。単位はunitunit - timeoutパラメータの解釈方法を決定するTimeUnitnullInterruptedException - 待機中に割込みが発生した場合public E poll()
public boolean isEmpty()
trueを返します。SynchronousQueueには内部容量がありません。isEmpty、インタフェース: Collection<E>isEmpty、クラス: AbstractCollection<E>truepublic int size()
SynchronousQueueには内部容量がありません。size、インタフェース: Collection<E>size、クラス: AbstractCollection<E>public int remainingCapacity()
SynchronousQueueには内部容量がありません。remainingCapacity、インタフェース: BlockingQueue<E>public void clear()
SynchronousQueueには内部容量がありません。clear、インタフェース: Collection<E>clear、クラス: AbstractQueue<E>public boolean contains(Object o)
falseを返します。SynchronousQueueには内部容量がありません。contains、インタフェース: Collection<E>contains、インタフェース: BlockingQueue<E>contains、クラス: AbstractCollection<E>o - 要素falsepublic boolean remove(Object o)
falseを返します。SynchronousQueueには内部容量がありません。remove、インタフェース: Collection<E>remove、インタフェース: BlockingQueue<E>remove、クラス: AbstractCollection<E>o - 削除する要素falsepublic boolean containsAll(Collection<?> c)
falseを返します。SynchronousQueueには内部容量がありません。containsAll、インタフェース: Collection<E>containsAll、クラス: AbstractCollection<E>c - コレクションfalseAbstractCollection.contains(Object)public boolean removeAll(Collection<?> c)
falseを返します。SynchronousQueueには内部容量がありません。removeAll、インタフェース: Collection<E>removeAll、クラス: AbstractCollection<E>c - コレクションfalseAbstractCollection.remove(Object), AbstractCollection.contains(Object)public boolean retainAll(Collection<?> c)
falseを返します。SynchronousQueueには内部容量がありません。retainAll、インタフェース: Collection<E>retainAll、クラス: AbstractCollection<E>c - コレクションfalseAbstractCollection.remove(Object), AbstractCollection.contains(Object)public E peek()
nullを返します。アクティブに待機されないかぎり、SynchronousQueueは要素を返しません。public Iterator<E> iterator()
hasNextがfalseを返す空のイテレータを返します。iterator、インタフェース: Iterable<E>iterator、インタフェース: Collection<E>iterator、クラス: AbstractCollection<E>public Spliterator<E> spliterator()
Spliterator.trySplit()を呼び出すと常にnullが返される空のスプリッテレータを返します。spliterator、インタフェース: Iterable<E>spliterator、インタフェース: Collection<E>public Object[] toArray()
toArray、インタフェース: Collection<E>toArray、クラス: AbstractCollection<E>public <T> T[] toArray(T[] a)
nullに設定して返します。toArray、インタフェース: Collection<E>toArray、クラス: AbstractCollection<E>T - コレクションを含む配列の実行時の型a - 配列NullPointerException - 指定された配列がnullである場合public int drainTo(Collection<? super E> c)
BlockingQueuecに要素を追加しようとしたときに障害が発生すると、関連する例外のスロー時に、要素がこのキューとコレクションのいずれにも存在しない場合と、一方または両方に存在する場合があります。キューをそれ自体に排出しようとすると、IllegalArgumentExceptionがスローされます。また、オペレーションの進行中に指定されたコレクションが変更された場合の、このオペレーションの動作は定義されていません。drainTo、インタフェース: BlockingQueue<E>c - 要素の転送先のコレクションUnsupportedOperationException - 指定されたコレクションで追加の要素がサポートされていない場合ClassCastException - このキューの要素のクラスが原因で、その要素を指定されたコレクションに追加できない場合NullPointerException - 指定されたコレクションがnullである場合IllegalArgumentException - 指定されたコレクションがこのキューである場合、またはこのキューの要素のあるプロパティが原因で指定されたコレクションに追加できない場合public int drainTo(Collection<? super E> c, int maxElements)
BlockingQueuecに要素を追加しようとしたときに障害が発生すると、関連する例外のスロー時に、要素がこのキューとコレクションのいずれにも存在しない場合と、一方または両方に存在する場合があります。キューをそれ自体に排出しようとすると、IllegalArgumentExceptionがスローされます。また、オペレーションの進行中に指定されたコレクションが変更された場合の、このオペレーションの動作は定義されていません。drainTo、インタフェース: BlockingQueue<E>c - 要素の転送先のコレクションmaxElements - 転送する要素の最大数UnsupportedOperationException - 指定されたコレクションで追加の要素がサポートされていない場合ClassCastException - このキューの要素のクラスが原因で、その要素を指定されたコレクションに追加できない場合NullPointerException - 指定されたコレクションがnullである場合IllegalArgumentException - 指定されたコレクションがこのキューである場合、またはこのキューの要素のあるプロパティが原因で指定されたコレクションに追加できない場合 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.