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