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()
キュー内にある要素の数を返します。
|
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, removeAll, retainAll, toArray, toArray
public LinkedTransferQueue()
LinkedTransferQueue
を作成します。public LinkedTransferQueue(Collection<? extends E> c)
LinkedTransferQueue
を作成します。c
- 初期状態で含む要素のコレクションNullPointerException
- 指定されたコレクションまたはそのいずれかの要素が null である場合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
- 処理を中止するまでの待機時間。単位は 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
- 要素が転送された場合。それ以外の場合は 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
- 処理を中止するまでの待機時間。単位は unitunit
- timeout パラメータの解釈方法を決定する TimeUnitInterruptedException
- 待機中に割り込みが発生した場合public int drainTo(Collection<? super E> c)
BlockingQueue
drainTo
、インタフェース: BlockingQueue<E>
c
- 要素の転送先のコレクションNullPointerException
- 指定されたコレクションが null である場合IllegalArgumentException
- 指定されたコレクションがこのキューである場合、またはこのキューの要素のあるプロパティーが原因で指定されたコレクションに追加できない場合public int drainTo(Collection<? super E> c, int maxElements)
BlockingQueue
drainTo
、インタフェース: BlockingQueue<E>
c
- 要素の転送先のコレクションmaxElements
- 転送する要素の最大数NullPointerException
- 指定されたコレクションが null である場合IllegalArgumentException
- 指定されたコレクションがこのキューである場合、またはこのキューの要素のあるプロパティーが原因で指定されたコレクションに追加できない場合public Iterator<E> iterator()
返されるイテレータは「弱一貫性」を持つイテレータであり、ConcurrentModificationException
をスローすることはなく、イテレータの構築時に存在した要素をトラバースすることを保証します。また、構築後のすべての変更を反映します (ただし保証されてはいない)。
iterator
、インタフェース: Iterable<E>
iterator
、インタフェース: Collection<E>
iterator
、クラス: AbstractCollection<E>
public boolean isEmpty()
true
を返します。isEmpty
、インタフェース: Collection<E>
isEmpty
、クラス: AbstractCollection<E>
true
public boolean hasWaitingConsumer()
TransferQueue
BlockingQueue.take()
または時間指定の poll
経由で要素を受け取ることを待機しているコンシューマが少なくとも 1 つある場合、true
を返します。戻り値は状況の瞬間的な状態です。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, 2013, Oracle and/or its affiliates. All rights reserved.