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() |
BlockingQueue.take()または時間指定のpoll経由で要素を受け取ることを待機しているコンシューマが少なくとも1つある場合、trueを返します。 |
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, removecontainsAll, removeAll, retainAll, toArray, toArray, toStringclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitaddAll, clear, containsAll, equals, hashCode, parallelStream, removeAll, removeIf, retainAll, stream, toArray, toArraypublic 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を実装します。Spliteratorpublic 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 - 処理を中止するまでの待機時間。単位はunitunit - timeoutパラメータの解釈方法を決定するTimeUnittrue (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 - 要素が転送された場合。それ以外の場合はfalseNullPointerException - 指定された要素が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 - 処理を中止するまでの待機時間。単位はunitunit - timeoutパラメータの解釈方法を決定するTimeUnittrue、完了前に指定された待機時間が経過した場合はfalseで、この場合、要素はエンキューされたままになりませんNullPointerException - 指定された要素がnullである場合InterruptedException - 待機中に割り込まれた場合。この場合、要素はエンキューされたままになりませんpublic E take() throws InterruptedException
BlockingQueuetake、インタフェースBlockingQueue<E>InterruptedException - 待機中に割込みが発生した場合public E poll(long timeout, TimeUnit unit) throws InterruptedException
BlockingQueuepoll、インタフェースBlockingQueue<E>timeout - 処理を中止するまでの待機時間。単位はunitunit - timeoutパラメータの解釈方法を決定するTimeUnitnullInterruptedException - 待機中に割込みが発生した場合public int drainTo(Collection<? super E> c)
BlockingQueuecに要素を追加しようとしたときに障害が発生すると、関連する例外のスロー時に、要素がこのキューとコレクションのいずれにも存在しない場合と、一方または両方に存在する場合があります。 キューをそれ自体に排出しようとすると、IllegalArgumentExceptionがスローされます。 また、オペレーションの進行中に指定されたコレクションが変更された場合の、このオペレーションの動作は定義されていません。 drainTo、インタフェースBlockingQueue<E>c - 要素の転送先のコレクションNullPointerException - 指定されたコレクションがnullである場合IllegalArgumentException - 指定されたコレクションがこのキューである場合、またはこのキューの要素のあるプロパティが原因で指定されたコレクションに追加できない場合public int drainTo(Collection<? super E> c, int maxElements)
BlockingQueuecに要素を追加しようとしたときに障害が発生すると、関連する例外のスロー時に、要素がこのキューとコレクションのいずれにも存在しない場合と、一方または両方に存在する場合があります。 キューをそれ自体に排出しようとすると、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>truepublic boolean hasWaitingConsumer()
TransferQueueBlockingQueue.take()または時間指定のpoll経由で要素を受け取ることを待機しているコンシューマが少なくとも1つある場合、trueを返します。 戻り値は状況の瞬間的な状態です。 hasWaitingConsumer、インタフェースTransferQueue<E>truepublic int size()
Integer.MAX_VALUEより多くの要素がある場合は、Integer.MAX_VALUEを返します。
大半のコレクションとは異なり、このメソッドは一定時間のオペレーションではないことに留意してください。 これらのキューには非同期という特性があるため、現在の要素数を判定するにはO(n)トラバーサルが必要です。
size、インタフェースCollection<E>size、クラスAbstractCollection<E>public int getWaitingConsumerCount()
TransferQueueBlockingQueue.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 - キューから削除される要素(その要素が存在する場合)truepublic boolean contains(Object o)
trueを返します。 つまり、このキュー内にo.equals(e)のような1つ以上の要素eが含まれている場合、trueを返します。 contains、インタフェースCollection<E>contains、インタフェースBlockingQueue<E>contains、クラスAbstractCollection<E>o - このキューに含まれているかどうかを調べるオブジェクトtruepublic int remainingCapacity()
LinkedTransferQueueは容量制約を受けないため、常にInteger.MAX_VALUEを返します。remainingCapacity、インタフェースBlockingQueue<E>Integer.MAX_VALUE (BlockingQueue.remainingCapacityで指定されているとおり) バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。