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, remove
toString
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
add
addAll, equals, hashCode, parallelStream, removeIf, stream
public 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
- 処理を中止するまでの待機時間。単位はunit
unit
- timeout
パラメータの解釈方法を決定するTimeUnit
true
。コンシューマが出現する前に指定された待機時間が経過した場合はfalse
InterruptedException
- 待機中に割込みが発生した場合NullPointerException
- 指定された要素がnullである場合public boolean offer(E e)
offer
、インタフェース: BlockingQueue<E>
offer
、インタフェース: Queue<E>
e
- 追加する要素true
、それ以外の場合はfalse
NullPointerException
- 指定された要素がnullである場合public E take() throws InterruptedException
take
、インタフェース: BlockingQueue<E>
InterruptedException
- 待機中に割込みが発生した場合public E poll(long timeout, TimeUnit unit) throws InterruptedException
poll
、インタフェース: BlockingQueue<E>
timeout
- 処理を中止するまでの待機時間。単位はunit
unit
- timeout
パラメータの解釈方法を決定するTimeUnit
null
InterruptedException
- 待機中に割込みが発生した場合public E poll()
public boolean isEmpty()
true
を返します。SynchronousQueue
には内部容量がありません。isEmpty
、インタフェース: Collection<E>
isEmpty
、クラス: AbstractCollection<E>
true
public 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
- 要素false
public boolean remove(Object o)
false
を返します。SynchronousQueue
には内部容量がありません。remove
、インタフェース: Collection<E>
remove
、インタフェース: BlockingQueue<E>
remove
、クラス: AbstractCollection<E>
o
- 削除する要素false
public boolean containsAll(Collection<?> c)
false
を返します。SynchronousQueue
には内部容量がありません。containsAll
、インタフェース: Collection<E>
containsAll
、クラス: AbstractCollection<E>
c
- コレクションfalse
AbstractCollection.contains(Object)
public boolean removeAll(Collection<?> c)
false
を返します。SynchronousQueue
には内部容量がありません。removeAll
、インタフェース: Collection<E>
removeAll
、クラス: AbstractCollection<E>
c
- コレクションfalse
AbstractCollection.remove(Object)
, AbstractCollection.contains(Object)
public boolean retainAll(Collection<?> c)
false
を返します。SynchronousQueue
には内部容量がありません。retainAll
、インタフェース: Collection<E>
retainAll
、クラス: AbstractCollection<E>
c
- コレクションfalse
AbstractCollection.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)
BlockingQueue
c
に要素を追加しようとしたときに障害が発生すると、関連する例外のスロー時に、要素がこのキューとコレクションのいずれにも存在しない場合と、一方または両方に存在する場合があります。キューをそれ自体に排出しようとすると、IllegalArgumentException
がスローされます。また、オペレーションの進行中に指定されたコレクションが変更された場合の、このオペレーションの動作は定義されていません。drainTo
、インタフェース: BlockingQueue<E>
c
- 要素の転送先のコレクションUnsupportedOperationException
- 指定されたコレクションで追加の要素がサポートされていない場合ClassCastException
- このキューの要素のクラスが原因で、その要素を指定されたコレクションに追加できない場合NullPointerException
- 指定されたコレクションがnullである場合IllegalArgumentException
- 指定されたコレクションがこのキューである場合、またはこのキューの要素のあるプロパティが原因で指定されたコレクションに追加できない場合public int drainTo(Collection<? super E> c, int maxElements)
BlockingQueue
c
に要素を追加しようとしたときに障害が発生すると、関連する例外のスロー時に、要素がこのキューとコレクションのいずれにも存在しない場合と、一方または両方に存在する場合があります。キューをそれ自体に排出しようとすると、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.