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
を作成します。 -
メソッドのサマリー
修飾子と型メソッド説明void
clear()
何も行いません。boolean
常にfalse
を返します。boolean
containsAll
(Collection<?> c) 指定されたコレクションが空でないかぎり、false
を返します。int
drainTo
(Collection<? super E> c) このキューから利用可能なすべての要素を削除し、それらを指定されたコレクションに追加します。int
drainTo
(Collection<? super E> c, int maxElements) 指定された数以内の利用可能な要素をこのキューから削除し、指定されたコレクションに追加します。boolean
isEmpty()
常にtrue
を返します。iterator()
常にhasNext
がfalse
を返す空のイテレータを返します。boolean
別のスレッドが要素を受け取るのを待機している場合、その要素をこのキューに追加します。boolean
指定された要素をこのキューに挿入します。必要に応じて、指定された待機時間まで別のスレッドが要素を受け取るのを待機します。peek()
常にnull
を返します。poll()
別のスレッドが現在要素を利用可能にしている場合は、キューの先頭を取得して削除します。このキューの先頭を取得および削除します。必要に応じて、指定された待機時間まで別のスレッドがその要素を挿入するのを待機します。void
指定された要素をこのキューに追加します。必要に応じて、別のスレッドが要素を受け取るまで待機します。int
常にゼロを返します。boolean
常にfalse
を返します。boolean
removeAll
(Collection<?> c) 常にfalse
を返します。boolean
retainAll
(Collection<?> c) 常にfalse
を返します。int
size()
常にゼロを返します。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
- 処理を中止するまでの待機時間。単位はunit
unit
-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
- 処理を中止するまでの待機時間。単位はunit
unit
-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
- 指定されたコレクションがこのキューである場合、またはこのキューの要素のあるプロパティが原因で指定されたコレクションに追加できない場合
-