クラスSynchronousQueue<E>
java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractQueue<E>
java.util.concurrent.SynchronousQueue<E>
- 型パラメータ:
E- このキューに保持されている要 の型
- すべての実装されたインタフェース:
Serializable,Iterable<E>,Collection<E>,BlockingQueue<E>,Queue<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のメンバーです。
- 導入されたバージョン:
- 1.5
- 関連 目:
-
コンストラクタのサマリー
コンストラクタコンストラクタ説明不公平アクセス・ポリシーでSynchronousQueueを作成します。SynchronousQueue(boolean fair) 指定された公平性ポリシーでSynchronousQueueを作成します。 -
メソッドのサマリー
修飾子と型メソッド説明voidclear()何も行いません。boolean常にfalseを返します。booleancontainsAll(Collection<?> c) 指定されたコレクションが空でないかぎり、falseを返します。intdrainTo(Collection<? super E> c) このキューから利用可能なすべての要 を削除し、それらを指定されたコレクションに追 します。intdrainTo(Collection<? super E> c, int maxElements) 指定された数以内の利用可能な要 をこのキューから削除し、指定されたコレクションに追 します。booleanisEmpty()常にtrueを返します。iterator()常にhasNextがfalseを返す空のイテレータを返します。boolean別のスレッドが要 を受け取るのを待機している 合、その要 をこのキューに追 します。boolean指定された要 をこのキューに挿入します。必要に応じて、指定された待機時間まで別のスレッドが要 を受け取るのを待機します。peek()常にnullを返します。poll()別のスレッドが現在要 を利用可能にしている 合は、キューの先 を取得して削除します。このキューの先 を取得および削除します。必要に応じて、指定された待機時間まで別のスレッドがその要 を挿入するのを待機します。void指定された要 をこのキューに追 します。必要に応じて、別のスレッドが要 を受け取るまで待機します。int常にゼロを返します。boolean常にfalseを返します。booleanremoveAll(Collection<?> c) 常にfalseを返します。booleanretainAll(Collection<?> c) 常にfalseを返します。intsize()常にゼロを返します。trySplitを呼び出すと常にnullが返される空のスプリッテレータを返します。take()このキューの先 を取得して削除します。必要に応じて、別のスレッドがその要 を挿入するまで待機します。Object[]toArray()長さがゼロの配列を返します。<T> T[]toArray(T[] a) 指定された配列の0(ゼロ)要 をnull(配列の長さがゼロ以外の 合)に設定し、それを返します。toString()常に"[]"を返します。クラスjava.util.AbstractQueueで宣言されたメソッド
add, addAll, element, removeクラスjava.lang.Objectで宣言されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitインタフェースjava.util.concurrent.BlockingQueueで宣言されたメソッド
addインタフェースjava.util.Collectionで宣言されたメソッド
addAll, equals, hashCode, parallelStream, removeIf, stream, toArray
-
コンストラクタの詳細
-
SynchronousQueue
public SynchronousQueue()不公平アクセス・ポリシーでSynchronousQueueを作成します。 -
SynchronousQueue
public SynchronousQueue(boolean fair) 指定された公平性ポリシーでSynchronousQueueを作成します。- パラメータ:
fair- trueの 合、待機中のスレッドはFIFOの 序でアクセスが決定される。それ以外の 合、 序は指定されない。
-
-
メソッドの詳細
-
put
public void put(E e) throws InterruptedException 指定された要 をこのキューに追 します。必要に応じて、別のスレッドが要 を受け取るまで待機します。- 定義:
put、インタフェースBlockingQueue<E>- パラメータ:
e- 追 する要- スロー:
InterruptedException- 待機中に割込みが発生した 合NullPointerException- 指定された要 がnullである 合
-
offer
public boolean offer(E e, long timeout, TimeUnit unit) throws InterruptedException 指定された要 をこのキューに挿入します。必要に応じて、指定された待機時間まで別のスレッドが要 を受け取るのを待機します。- 定義:
offer、インタフェースBlockingQueue<E>- パラメータ:
e- 追 する要timeout- 処理を中止するまでの待機時間。単位はunitunit-timeoutパラメータの解釈方法を決定するTimeUnit- 戻り値:
- 成功した 合は
true。コンシューマが出現する前に指定された待機時間が経過した 合はfalse - スロー:
InterruptedException- 待機中に割込みが発生した 合NullPointerException- 指定された要 がnullである 合
-
offer
public boolean offer(E e) 別のスレッドが要 を受け取るのを待機している 合、その要 をこのキューに追 します。- 定義:
offer、インタフェースBlockingQueue<E>- 定義:
offer、インタフェースQueue<E>- パラメータ:
e- 追 する要- 戻り値:
- このキューに要 が追 された 合は
true、それ以外の 合はfalse - スロー:
NullPointerException- 指定された要 がnullである 合
-
take
public E take() throws InterruptedExceptionこのキューの先 を取得して削除します。必要に応じて、別のスレッドがその要 を挿入するまで待機します。- 定義:
take、インタフェースBlockingQueue<E>- 戻り値:
- キューの先
- スロー:
InterruptedException- 待機中に割込みが発生した 合
-
poll
public E poll(long timeout, TimeUnit unit) throws InterruptedException このキューの先 を取得および削除します。必要に応じて、指定された待機時間まで別のスレッドがその要 を挿入するのを待機します。- 定義:
poll、インタフェースBlockingQueue<E>- パラメータ:
timeout- 処理を中止するまでの待機時間。単位はunitunit-timeoutパラメータの解釈方法を決定するTimeUnit- 戻り値:
- このキューの先 。要 が存在する前に指定された待機時間が経過した 合は
null - スロー:
InterruptedException- 待機中に割込みが発生した 合
-
poll
-
isEmpty
public boolean isEmpty()常にtrueを返します。SynchronousQueueには内部容量がありません。- 定義:
isEmpty、インタフェースCollection<E>- オーバーライド:
isEmpty、クラスAbstractCollection<E>- 戻り値:
true
-
size
-
remainingCapacity
public int remainingCapacity()常にゼロを返します。SynchronousQueueには内部容量がありません。- 定義:
remainingCapacity、インタフェースBlockingQueue<E>- 戻り値:
- zero
-
clear
public void clear()何も行いません。SynchronousQueueには内部容量がありません。- 定義:
clear、インタフェースCollection<E>- オーバーライド:
clear、クラスAbstractQueue<E>
-
contains
public boolean contains(Object o) 常にfalseを返します。SynchronousQueueには内部容量がありません。- 定義:
contains、インタフェースBlockingQueue<E>- 定義:
contains、インタフェースCollection<E>- オーバーライド:
contains、クラスAbstractCollection<E>- パラメータ:
o- 要- 戻り値:
false
-
remove
public boolean remove(Object o) 常にfalseを返します。SynchronousQueueには内部容量がありません。- 定義:
remove、インタフェースBlockingQueue<E>- 定義:
remove、インタフェースCollection<E>- オーバーライド:
remove、クラスAbstractCollection<E>- パラメータ:
o- 削除する要- 戻り値:
false
-
containsAll
public boolean containsAll(Collection<?> c) 指定されたコレクションが空でないかぎり、falseを返します。SynchronousQueueには内部容量がありません。- 定義:
containsAll、インタフェースCollection<E>- オーバーライド:
containsAll、クラスAbstractCollection<E>- パラメータ:
c- コレクション- 戻り値:
- 指定されたコレクションが空でないかぎり
false - 関連 目:
-
removeAll
public boolean removeAll(Collection<?> c) 常にfalseを返します。SynchronousQueueには内部容量がありません。- 定義:
removeAll、インタフェースCollection<E>- オーバーライド:
removeAll、クラスAbstractCollection<E>- パラメータ:
c- コレクション- 戻り値:
false- 関連 目:
-
retainAll
public boolean retainAll(Collection<?> c) 常にfalseを返します。SynchronousQueueには内部容量がありません。- 定義:
retainAll、インタフェースCollection<E>- オーバーライド:
retainAll、クラスAbstractCollection<E>- パラメータ:
c- コレクション- 戻り値:
false- 関連 目:
-
peek
-
iterator
-
spliterator
public Spliterator<E> spliterator()trySplitを呼び出すと常にnullが返される空のスプリッテレータを返します。- 定義:
spliterator、インタフェースCollection<E>- 定義:
spliterator、インタフェースIterable<E>- 戻り値:
- 空のスプリッテレータ
- 導入されたバージョン:
- 1.8
-
toArray
public Object[] toArray()長さがゼロの配列を返します。- 定義:
toArray、インタフェースCollection<E>- オーバーライド:
toArray、クラスAbstractCollection<E>- 戻り値:
- 長さがゼロの配列
-
toArray
public <T> T[] toArray(T[] a) 指定された配列の0(ゼロ)要 をnull(配列の長さがゼロ以外の 合)に設定し、それを返します。- 定義:
toArray、インタフェースCollection<E>- オーバーライド:
toArray、クラスAbstractCollection<E>- 型パラメータ:
T- コレクションを 納する配列のコンポーネント型- パラメータ:
a- 配列- 戻り値:
- 指定された配列
- スロー:
NullPointerException- 指定された配列がnullである 合
-
toString
-
drainTo
public int drainTo(Collection<? super E> c) インタフェースからコピーされた説明:BlockingQueueこのキューから利用可能なすべての要 を削除し、それらを指定されたコレクションに追 します。 このオペレーションは、このキューを繰返しポーリングする 合よりも効率的な 合があります。 コレクションcに要 を追 しようとしたときに障害が発生すると、関連する例外のスロー時に、要 がこのキューとコレクションのいずれにも存在しない 合と、一方または両方に存在する 合があります。 キューをそれ自体に排出しようとすると、IllegalArgumentExceptionがスローされます。 また、オペレーションの進行中に指定されたコレクションが変更された 合の、このオペレーションの動作は定義されていません。- 定義:
drainTo、インタフェースBlockingQueue<E>- パラメータ:
c- 要 の転送先のコレクション- 戻り値:
- 転送された要 の数
- スロー:
UnsupportedOperationException- 指定されたコレクションで追 の要 がサポートされていない 合ClassCastException- このキューの要 のクラスが原 で、その要 を指定されたコレクションに追 できない 合NullPointerException- 指定されたコレクションがnullである 合IllegalArgumentException- 指定されたコレクションがこのキューである 合、またはこのキューの要 のあるプロパティが原 で指定されたコレクションに追 できない 合
-
drainTo
public int drainTo(Collection<? super E> c, int maxElements) インタフェースからコピーされた説明:BlockingQueue指定された数以内の利用可能な要 をこのキューから削除し、指定されたコレクションに追 します。 コレクションcに要 を追 しようとしたときに障害が発生すると、関連する例外のスロー時に、要 がこのキューとコレクションのいずれにも存在しない 合と、一方または両方に存在する 合があります。 キューをそれ自体に排出しようとすると、IllegalArgumentExceptionがスローされます。 また、オペレーションの進行中に指定されたコレクションが変更された 合の、このオペレーションの動作は定義されていません。- 定義:
drainTo、インタフェースBlockingQueue<E>- パラメータ:
c- 要 の転送先のコレクションmaxElements- 転送する要 の最大数- 戻り値:
- 転送された要 の数
- スロー:
UnsupportedOperationException- 指定されたコレクションで追 の要 がサポートされていない 合ClassCastException- このキューの要 のクラスが原 で、その要 を指定されたコレクションに追 できない 合NullPointerException- 指定されたコレクションがnullである 合IllegalArgumentException- 指定されたコレクションがこのキューである 合、またはこのキューの要 のあるプロパティが原 で指定されたコレクションに追 できない 合
-