E
- このコレクション内に保持される要素の型public class LinkedTransferQueue<E> extends AbstractQueue<E> implements TransferQueue<E>, Serializable
TransferQueue
です。このキューは、指定された任意のプロデューサに関して、FIFO (先入れ先出し)で要素を順序付けします。キューの先頭は、特定のプロデューサに関して、もっとも長い時間キューに入っていた要素です。キューの末尾は、特定のプロデューサに関して、もっとも短い時間キューに入っていた要素です。
大半のコレクションとは異なり、size
メソッドは一定時間のオペレーションではないことに留意してください。これらのキューには非同期という特性があるため、現在の要素数を判定するには要素全体をトラバースする必要があります。したがって、このコレクションがトラバーサル中に変更された場合、不正確な結果が報告されることがあります。また、addAll
、removeAll
、retainAll
、containsAll
、equals
、およびtoArray
の一括オペレーションについて、原子的な実行は保証されていません。たとえば、addAll
オペレーションと並行して動作するイテレータは、追加された要素の一部しか表示しないことがあります。
このクラスとそのイテレータは、Collection
およびIterator
インタフェースの任意メソッドすべてを実装します。
メモリー整合性効果: ほかの並行処理コレクションと同様、オブジェクトをLinkedTransferQueue
に配置する前のスレッド内のアクションは、別のスレッドでのその要素へのアクセスまたはLinkedTransferQueue
からの削除に続くアクションよりも前に発生します。
このクラスは、Java Collections Frameworkのメンバーです。
コンストラクタと説明 |
---|
LinkedTransferQueue()
初期状態で空の
LinkedTransferQueue を作成します。 |
LinkedTransferQueue(Collection<? extends E> c)
指定されたコレクションの要素を初期状態で含む(要素はコレクションのイテレータのトラバーサル順に追加)
LinkedTransferQueue を作成します。 |
修飾子と型 | メソッドと説明 |
---|---|
boolean |
add(E e)
キューの末尾に、指定された要素を挿入します。
|
boolean |
contains(Object o)
指定された要素がキューに含まれている場合に
true を返します。 |
int |
drainTo(Collection<? super E> c)
このキューから利用可能なすべての要素を削除し、それらを指定されたコレクションに追加します。
|
int |
drainTo(Collection<? super E> c, int maxElements)
指定された数以内の利用可能な要素をこのキューから削除し、指定されたコレクションに追加します。
|
int |
getWaitingConsumerCount()
BlockingQueue.take() または時間指定のpoll 経由で要素を受け取ることを待機しているコンシューマの推定数を返します。 |
boolean |
hasWaitingConsumer()
|
boolean |
isEmpty()
キューに要素がない場合に
true を返します。 |
Iterator<E> |
iterator()
このキュー内の要素を適切な順序で反復処理するイテレータを返します。
|
boolean |
offer(E e)
キューの末尾に、指定された要素を挿入します。
|
boolean |
offer(E e, long timeout, TimeUnit unit)
キューの末尾に、指定された要素を挿入します。
|
E |
peek()
このキューの先頭を取得しますが、削除しません。キューが空の場合は
null を返します。 |
E |
poll()
このキューの先頭を取得および削除します。キューが空の場合は
null を返します。 |
E |
poll(long timeout, TimeUnit unit)
このキューの先頭を取得して削除します。必要に応じて、指定された待機時間まで要素が利用可能になるのを待機します。
|
void |
put(E e)
キューの末尾に、指定された要素を挿入します。
|
int |
remainingCapacity()
LinkedTransferQueue は容量制約を受けないため、常にInteger.MAX_VALUE を返します。 |
boolean |
remove(Object o)
指定された要素の単一のインスタンスがこのキューに存在する場合は、キューから削除します。
|
int |
size()
キュー内にある要素の数を返します。
|
Spliterator<E> |
spliterator()
このキュー内の要素に対する
Spliterator を返します。 |
E |
take()
このキューの先頭を取得して削除します。必要に応じて、要素が利用可能になるまで待機します。
|
void |
transfer(E e)
待機する必要があれば待機し、要素をコンシューマに転送します。
|
boolean |
tryTransfer(E e)
可能な場合、待機中のコンシューマに要素をただちに転送します。
|
boolean |
tryTransfer(E e, long timeout, TimeUnit unit)
タイム・アウトが経過する前に要素をコンシューマに転送できる場合には、そうします。
|
addAll, clear, element, remove
containsAll, removeAll, retainAll, toArray, toArray, toString
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
addAll, clear, containsAll, equals, hashCode, parallelStream, removeAll, removeIf, retainAll, stream, toArray, toArray
public LinkedTransferQueue()
LinkedTransferQueue
を作成します。public LinkedTransferQueue(Collection<? extends E> c)
LinkedTransferQueue
を作成します。c
- 初期状態で含む要素のコレクションNullPointerException
- 指定されたコレクションまたはそのいずれかの要素がnullである場合public Spliterator<E> spliterator()
Spliterator
を返します。
返されるスプリッテレータは弱一貫性を保持します。
Spliterator
は、Spliterator.CONCURRENT
、Spliterator.ORDERED
およびSpliterator.NONNULL
を報告します。
spliterator
、インタフェース: Iterable<E>
spliterator
、インタフェース: Collection<E>
Spliterator
は、制限付きの並列処理を許可するためにtrySplit
を実装します。Spliterator
public void put(E e)
put
、インタフェース: BlockingQueue<E>
e
- 追加する要素NullPointerException
- 指定された要素がnullである場合public boolean offer(E e, long timeout, TimeUnit unit)
false
を返しません。offer
、インタフェース: BlockingQueue<E>
e
- 追加する要素timeout
- 処理を中止するまでの待機時間。単位はunit
unit
- timeout
パラメータの解釈方法を決定するTimeUnit
true
(BlockingQueue.offer
で指定されているとおり)NullPointerException
- 指定された要素がnullである場合public boolean offer(E e)
false
を返しません。offer
、インタフェース: BlockingQueue<E>
offer
、インタフェース: Queue<E>
e
- 追加する要素true
(Queue.offer(E)
で指定されているとおり)NullPointerException
- 指定された要素がnullである場合public boolean add(E e)
IllegalStateException
をスローしないか、false
を返します。add
、インタフェース: Collection<E>
add
、インタフェース: BlockingQueue<E>
add
、インタフェース: Queue<E>
add
、クラス: AbstractQueue<E>
e
- 追加する要素true
(Collection.add(E)
で指定されているとおり)NullPointerException
- 指定された要素がnullである場合public boolean tryTransfer(E e)
より正確には、(take()
または時間指定のpoll
で)要素を受け取ることを待機しているコンシューマがすでに存在する場合は指定された要素をただちに転送し、それ以外の場合は要素をエンキューせずにfalse
を返します。
tryTransfer
、インタフェース: TransferQueue<E>
e
- 転送する要素true
- 要素が転送された場合。それ以外の場合はfalse
NullPointerException
- 指定された要素がnullである場合public void transfer(E e) throws InterruptedException
より正確には、指定された要素の受信を(take()
または時間指定のpoll
で)すでに待機しているコンシューマが存在する場合はその要素をただちに転送し、それ以外の場合は指定された要素をこのキューの末尾に挿入し、その要素がコンシューマによって受信されるまで待機します。
transfer
、インタフェース: TransferQueue<E>
e
- 転送する要素NullPointerException
- 指定された要素がnullである場合InterruptedException
- 待機中に割り込まれた場合。この場合、要素はエンキューされたままになりませんpublic boolean tryTransfer(E e, long timeout, TimeUnit unit) throws InterruptedException
より正確には、指定された要素の受信を(take()
または時間指定のpoll
で)すでに待機しているコンシューマが存在する場合はその要素をただちに転送し、それ以外の場合は指定された要素をこのキューの末尾に挿入し、その要素がコンシューマによって受信されるまで待機します。その要素を転送できるようになる前に、指定された待機時間が経過した場合はfalse
を返します。
tryTransfer
、インタフェース: TransferQueue<E>
e
- 転送する要素timeout
- 処理を中止するまでの待機時間。単位はunit
unit
- timeout
パラメータの解釈方法を決定するTimeUnit
true
、完了前に指定された待機時間が経過した場合はfalse
で、この場合、要素はエンキューされたままになりませんNullPointerException
- 指定された要素がnullである場合InterruptedException
- 待機中に割り込まれた場合。この場合、要素はエンキューされたままになりませんpublic E take() throws InterruptedException
BlockingQueue
take
、インタフェース: BlockingQueue<E>
InterruptedException
- 待機中に割込みが発生した場合public E poll(long timeout, TimeUnit unit) throws InterruptedException
BlockingQueue
poll
、インタフェース: BlockingQueue<E>
timeout
- 処理を中止するまでの待機時間。単位はunit
unit
- timeout
パラメータの解釈方法を決定するTimeUnit
null
InterruptedException
- 待機中に割込みが発生した場合public int drainTo(Collection<? super E> c)
BlockingQueue
c
に要素を追加しようとしたときに障害が発生すると、関連する例外のスロー時に、要素がこのキューとコレクションのいずれにも存在しない場合と、一方または両方に存在する場合があります。キューをそれ自体に排出しようとすると、IllegalArgumentException
がスローされます。また、オペレーションの進行中に指定されたコレクションが変更された場合の、このオペレーションの動作は定義されていません。drainTo
、インタフェース: BlockingQueue<E>
c
- 要素の転送先のコレクションNullPointerException
- 指定されたコレクションがnullである場合IllegalArgumentException
- 指定されたコレクションがこのキューである場合、またはこのキューの要素のあるプロパティが原因で指定されたコレクションに追加できない場合public int drainTo(Collection<? super E> c, int maxElements)
BlockingQueue
c
に要素を追加しようとしたときに障害が発生すると、関連する例外のスロー時に、要素がこのキューとコレクションのいずれにも存在しない場合と、一方または両方に存在する場合があります。キューをそれ自体に排出しようとすると、IllegalArgumentException
がスローされます。また、オペレーションの進行中に指定されたコレクションが変更された場合の、このオペレーションの動作は定義されていません。drainTo
、インタフェース: BlockingQueue<E>
c
- 要素の転送先のコレクションmaxElements
- 転送する要素の最大数NullPointerException
- 指定されたコレクションがnullである場合IllegalArgumentException
- 指定されたコレクションがこのキューである場合、またはこのキューの要素のあるプロパティが原因で指定されたコレクションに追加できない場合public Iterator<E> iterator()
返されるイテレータは弱一貫性を保持します。
iterator
、インタフェース: Iterable<E>
iterator
、インタフェース: Collection<E>
iterator
、クラス: AbstractCollection<E>
public boolean isEmpty()
true
を返します。isEmpty
、インタフェース: Collection<E>
isEmpty
、クラス: AbstractCollection<E>
true
public boolean hasWaitingConsumer()
TransferQueue
hasWaitingConsumer
、インタフェース: TransferQueue<E>
true
public int size()
Integer.MAX_VALUE
より多くの要素がある場合は、Integer.MAX_VALUE
を返します。
大半のコレクションとは異なり、このメソッドは一定時間のオペレーションではないことに留意してください。これらのキューには非同期という特性があるため、現在の要素数を判定するにはO(n)トラバーサルが必要です。
size
、インタフェース: Collection<E>
size
、クラス: AbstractCollection<E>
public int getWaitingConsumerCount()
TransferQueue
BlockingQueue.take()
または時間指定のpoll
経由で要素を受け取ることを待機しているコンシューマの推定数を返します。戻り値は状況の瞬間的な状態の近似であるため、コンシューマが完了したり、待機を中止したりした場合に不正確になることがあります。この値は監視およびヒューリスティックな方法に役立つ場合がありますが、同期制御のためのものではありません。このメソッドの実装は、TransferQueue.hasWaitingConsumer()
の実装よりもかなり遅くなる可能性が高くなります。getWaitingConsumerCount
、インタフェース: TransferQueue<E>
public boolean remove(Object o)
o.equals(e)
に該当する要素e
が1つ以上含まれている場合は、そのような要素を削除します。指定された要素がこのキューに含まれていた場合、つまり、呼出しの結果としてこのキューが変更された場合にtrue
を返します。remove
、インタフェース: Collection<E>
remove
、インタフェース: BlockingQueue<E>
remove
、クラス: AbstractCollection<E>
o
- キューから削除される要素(その要素が存在する場合)true
public boolean contains(Object o)
true
を返します。つまり、このキュー内にo.equals(e)
のような1つ以上の要素e
が含まれている場合、true
を返します。contains
、インタフェース: Collection<E>
contains
、インタフェース: BlockingQueue<E>
contains
、クラス: AbstractCollection<E>
o
- このキューに含まれているかどうかを調べるオブジェクトtrue
public int remainingCapacity()
LinkedTransferQueue
は容量制約を受けないため、常にInteger.MAX_VALUE
を返します。remainingCapacity
、インタフェース: BlockingQueue<E>
Integer.MAX_VALUE
(BlockingQueue.remainingCapacity
で指定されているとおり) バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.