モジュール java.base
パッケージ java.util.concurrent

クラスLinkedTransferQueue<E>

java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractQueue<E>
java.util.concurrent.LinkedTransferQueue<E>
型パラメータ:
E - このキューに保持されている要素の型
すべての実装されたインタフェース:
Serializable, Iterable<E>, Collection<E>, BlockingQueue<E>, TransferQueue<E>, Queue<E>

public class LinkedTransferQueue<E> extends AbstractQueue<E> implements TransferQueue<E>, Serializable
リンク・ノードに基づく、制限なしのTransferQueueです。 このキューは、指定された任意のプロデューサに関して、FIFO (先入れ先出し)で要素を順序付けします。 キューの先頭は、特定のプロデューサに関して、もっとも長い時間キューに入っていた要素です。 キューの末尾は、特定のプロデューサに関して、もっとも短い時間キューに入っていた要素です。

大半のコレクションとは異なり、sizeメソッドは一定時間のオペレーションではないことに留意してください。 これらのキューには非同期という特性があるため、現在の要素数を判定するには要素全体をトラバースする必要があります。したがって、このコレクションがトラバーサル中に変更された場合、不正確な結果が報告されることがあります。

AbstractQueue.addAll(java.util.Collection<? extends E>)removeIf(java.util.function.Predicate<? super E>)forEach(java.util.function.Consumer<? super E>)などの複数の要素を追加、削除、または検査するバルク操作は、アトミックに実行されることは保証されていません。 たとえば、 addAll操作と並行してforEachを走査すると、追加された要素の一部しか観察されない可能性があります。

このクラスとそのイテレータは、CollectionおよびIteratorインタフェースのオプション・メソッドすべてを実装します。

メモリー整合性効果: ほかの並行処理コレクションと同様、オブジェクトをLinkedTransferQueueに配置する前のスレッド内のアクションは、別のスレッドでのその要素へのアクセスまたはLinkedTransferQueueからの削除に続くアクションよりも前に発生します。

このクラスは、Java Collections Frameworkのメンバーです。

導入されたバージョン:
1.7
関連項目:
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    初期状態で空のLinkedTransferQueueを作成します。
    指定されたコレクションの要素を初期状態で含む(要素はコレクションのイテレータのトラバーサル順に追加) LinkedTransferQueueを作成します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    boolean
    add(E e)
    キューの末尾に、指定された要素を挿入します。
    void
    すべての要素をキューから削除します。
    boolean
    指定された要素がキューに含まれている場合にtrueを返します。
    int
    drainTo(Collection<? super E> c)
    このキューから利用可能なすべての要素を削除し、それらを指定されたコレクションに追加します。
    int
    drainTo(Collection<? super E> c, int maxElements)
    指定された数以内の利用可能な要素をこのキューから削除し、指定されたコレクションに追加します。
    void
    forEach(Consumer<? super E> action)
    Iterableの各要素に対して指定されたアクションを、すべての要素が処理されるか、アクションが例外をスローするまで実行します。
    int
    BlockingQueue.take()または時間指定のpoll経由で要素を受け取ることを待機しているコンシューマの推定数を返します。
    boolean
    BlockingQueue.take()または時間指定のpoll経由で要素を受け取ることを待機しているコンシューマが少なくとも1つある場合、trueを返します。
    boolean
    キューに要素がない場合にtrueを返します。
    このキュー内の要素を適切な順序で反復処理するイテレータを返します。
    boolean
    offer(E e)
    キューの末尾に、指定された要素を挿入します。
    boolean
    offer(E e, long timeout, TimeUnit unit)
    キューの末尾に、指定された要素を挿入します。
    キューの先頭を取得しますが、削除しません。キューが空の場合はnullを返します。
    キューの先頭を取得および削除します。キューが空の場合はnullを返します。
    poll(long timeout, TimeUnit unit)
    このキューの先頭を取得して削除します。必要に応じて、指定された待機時間まで要素が利用可能になるのを待機します。
    void
    put(E e)
    キューの末尾に、指定された要素を挿入します。
    int
    LinkedTransferQueueは容量制約を受けないため、常にInteger.MAX_VALUEを返します。
    boolean
    指定された要素の単一のインスタンスがこのキューに存在する場合は、キューから削除します。
    boolean
    指定されたコレクションにも格納されているこのコレクションのすべての要素を削除します(オプションの操作)。
    boolean
    removeIf(Predicate<? super E> filter)
    指定された述語を満たすこのコレクションの要素をすべて削除します。
    boolean
    このコレクションにおいて、指定されたコレクションに格納されている要素だけを保持します(オプションの操作)。
    int
    キュー内にある要素の数を返します。
    このキュー内の要素に対するSpliteratorを返します。
    このキューの先頭を取得して削除します。必要に応じて、要素が利用可能になるまで待機します。
    キュー内のすべての要素を適切な順序で含む配列を返します。
    <T> T[]
    toArray(T[] a)
    キュー内のすべての要素を適切な順序で含む配列を返します。返される配列の実行時の型は、指定された配列の型になります。
    void
    待機する必要があれば待機し、要素をコンシューマに転送します。
    boolean
    可能な場合、待機中のコンシューマに要素をただちに転送します。
    boolean
    tryTransfer(E e, long timeout, TimeUnit unit)
    タイム・アウトが経過する前に要素をコンシューマに転送できる場合には、そうします。

    クラス java.util.AbstractQueueで宣言されたメソッド

    addAll, clear, element, remove

    クラス java.util.AbstractCollectionで宣言されたメソッド

    containsAll, toString

    クラス java.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    インタフェース java.util.Collectionで宣言されたメソッド

    addAll, containsAll, equals, hashCode, parallelStream, stream, toArray

    インタフェース java.util.Queueで宣言されたメソッド

    element, remove
  • コンストラクタの詳細

    • LinkedTransferQueue

      public LinkedTransferQueue()
      初期状態で空のLinkedTransferQueueを作成します。
    • LinkedTransferQueue

      public LinkedTransferQueue(Collection<? extends E> c)
      指定されたコレクションの要素を初期状態で含む(要素はコレクションのイテレータのトラバーサル順に追加) LinkedTransferQueueを作成します。
      パラメータ:
      c - 初期状態で含む要素のコレクション
      例外:
      NullPointerException - 指定されたコレクションまたはそのいずれかの要素がnullである場合
  • メソッドの詳細

    • toArray

      public Object[] toArray()
      キュー内のすべての要素を適切な順序で含む配列を返します。

      返される配列は、それへの参照がこのキューで保持されない場合に、安全になります。 (つまり、このメソッドは新しい配列を割り当てます)。 このため、呼出し側は、返された配列を自由に変更できます。

      このメソッドは、配列ベースのAPIとコレクションベースのAPIの間の橋渡し役として機能します。

      定義:
      toArray、インタフェースCollection<E>
      オーバーライド:
      toArray、クラスAbstractCollection<E>
      戻り値:
      このキューのすべての要素が含まれている配列
    • toArray

      public <T> T[] toArray(T[] a)
      キュー内のすべての要素を適切な順序で含む配列を返します。返される配列の実行時の型は、指定された配列の型になります。 キューが指定された配列に収まる場合は、その中に返されます。 そうでない場合は、指定された配列の実行時の型とキューのサイズを持つ新しい配列が割り当てられます。

      キューが指定された配列に収まり、その配列にさらに余裕がある場合(つまり、配列がキューより多くの要素を持つ場合)、その配列内でキューの終端よりあとの要素はnullに設定されます。

      toArray()メソッドと同じように、このメソッドは、配列ベースのAPIとコレクションベースのAPIの間の橋渡し役として機能します。 さらに、このメソッドでは出力配列の実行時の型を正確に制御できるため、環境によっては割当ての手間を抑えるために使用できます。

      xが、文字列だけからなるキューであることがわかっていると仮定します。 次のコードを使うと、新しく割り当てられたStringの配列にキューをダンプできます。

       String[] y = x.toArray(new String[0]);
      toArray(new Object[0])は、機能の点でtoArray()と同一です。

      定義:
      toArray、インタフェースCollection<E>
      オーバーライド:
      toArray、クラスAbstractCollection<E>
      型パラメータ:
      T - コレクションを格納する配列のコンポーネント型
      パラメータ:
      a - 配列が十分な大きさを持つ場合は、キューの要素が格納される配列。そうでない場合は、要素を格納するために同じ実行時の型の新しい配列が割り当てられる
      戻り値:
      このキューのすべての要素が含まれている配列
      例外:
      ArrayStoreException - 指定された配列の実行時の型が、このキュー内の各要素の実行時の型のスーパー・タイプでない場合
      NullPointerException - 指定された配列がnullである場合
    • spliterator

      public Spliterator<E> spliterator()
      このキュー内の要素に対するSpliteratorを返します。

      返されるスプリッテレータは弱一貫性を保持します。

      Spliteratorは、Spliterator.CONCURRENTSpliterator.ORDEREDおよびSpliterator.NONNULLを報告します。

      定義:
      spliterator、インタフェースCollection<E>
      定義:
      spliterator、インタフェースIterable<E>
      実装上のノート:
      Spliteratorは、制限付きの並列処理を許可するためにtrySplitを実装します。
      戻り値:
      このキュー内の要素に対するSpliterator
      導入されたバージョン:
      1.8
    • put

      public void put(E e)
      キューの末尾に、指定された要素を挿入します。 キューがアンバウンド形式であるため、このメソッドはブロックを実行しません。
      定義:
      put、インタフェースBlockingQueue<E>
      パラメータ:
      e - 追加する要素
      例外:
      NullPointerException - 指定された要素がnullである場合
    • offer

      public boolean offer(E e, long timeout, TimeUnit unit)
      キューの末尾に、指定された要素を挿入します。 キューがアンバウンド形式であるため、このメソッドはブロックを実行しないか、falseを返しません。
      定義:
      offer、インタフェースBlockingQueue<E>
      パラメータ:
      e - 追加する要素
      timeout - 処理を中止するまでの待機時間。単位はunit
      unit - timeoutパラメータの解釈方法を決定するTimeUnit
      戻り値:
      true (BlockingQueue.offerで指定されているとおり)
      例外:
      NullPointerException - 指定された要素がnullである場合
    • offer

      public boolean offer(E e)
      キューの末尾に、指定された要素を挿入します。 キューがアンバウンド形式であるため、このメソッドはfalseを返しません。
      定義:
      offer、インタフェースBlockingQueue<E>
      定義:
      offer、インタフェースQueue<E>
      パラメータ:
      e - 追加する要素
      戻り値:
      true (Queue.offer(E)で指定されているとおり)
      例外:
      NullPointerException - 指定された要素がnullである場合
    • add

      public boolean add(E e)
      キューの末尾に、指定された要素を挿入します。 キューがアンバウンド形式であるため、このメソッドはIllegalStateExceptionをスローしないか、falseを返します。
      定義:
      add、インタフェースBlockingQueue<E>
      定義:
      add、インタフェースCollection<E>
      定義:
      add、インタフェースQueue<E>
      オーバーライド:
      add、クラスAbstractQueue<E>
      パラメータ:
      e - 追加する要素
      戻り値:
      true (Collection.add(E)で指定されているとおり)
      例外:
      NullPointerException - 指定された要素がnullである場合
    • tryTransfer

      public boolean tryTransfer(E e)
      可能な場合、待機中のコンシューマに要素をただちに転送します。

      より正確には、(take()または時間指定のpollで)要素を受け取ることを待機しているコンシューマがすでに存在する場合は指定された要素をただちに転送し、それ以外の場合は要素をエンキューせずにfalseを返します。

      定義:
      tryTransfer、インタフェースTransferQueue<E>
      パラメータ:
      e - 転送する要素
      戻り値:
      true - 要素が転送された場合。それ以外の場合はfalse
      例外:
      NullPointerException - 指定された要素がnullである場合
    • transfer

      public void transfer(E e) throws InterruptedException
      待機する必要があれば待機し、要素をコンシューマに転送します。

      より正確には、指定された要素の受信を(take()または時間指定のpollで)すでに待機しているコンシューマが存在する場合はその要素をただちに転送し、それ以外の場合は指定された要素をこのキューの末尾に挿入し、その要素がコンシューマによって受信されるまで待機します。

      定義:
      transfer、インタフェースTransferQueue<E>
      パラメータ:
      e - 転送する要素
      例外:
      NullPointerException - 指定された要素がnullである場合
      InterruptedException - 待機中に割り込まれた場合。この場合、要素はエンキューされたままになりません
    • tryTransfer

      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 - 待機中に割り込まれた場合。この場合、要素はエンキューされたままになりません
    • take

      public E take() throws InterruptedException
      インタフェースからコピーされた説明: BlockingQueue
      このキューの先頭を取得して削除します。必要に応じて、要素が利用可能になるまで待機します。
      定義:
      take、インタフェースBlockingQueue<E>
      戻り値:
      キューの先頭
      例外:
      InterruptedException - 待機中に割込みが発生した場合
    • poll

      public E poll(long timeout, TimeUnit unit) throws InterruptedException
      インタフェースからコピーされた説明: BlockingQueue
      このキューの先頭を取得して削除します。必要に応じて、指定された待機時間まで要素が利用可能になるのを待機します。
      定義:
      poll、インタフェースBlockingQueue<E>
      パラメータ:
      timeout - 処理を中止するまでの待機時間。単位はunit
      unit - timeoutパラメータの解釈方法を決定するTimeUnit
      戻り値:
      このキューの先頭。空きが生じる前に指定された待機時間が経過した場合はnull
      例外:
      InterruptedException - 待機中に割込みが発生した場合
    • poll

      public E poll()
      インタフェースからコピーされた説明: Queue
      キューの先頭を取得および削除します。キューが空の場合はnullを返します。
      定義:
      poll、インタフェースQueue<E>
      戻り値:
      キューの先頭。キューが空の場合はnull
    • drainTo

      public int drainTo(Collection<? super E> c)
      インタフェースからコピーされた説明: BlockingQueue
      このキューから利用可能なすべての要素を削除し、それらを指定されたコレクションに追加します。 このオペレーションは、このキューを繰返しポーリングする場合よりも効率的な場合があります。 コレクションcに要素を追加しようとしたときに障害が発生すると、関連する例外のスロー時に、要素がこのキューとコレクションのいずれにも存在しない場合と、一方または両方に存在する場合があります。 キューをそれ自体に排出しようとすると、IllegalArgumentExceptionがスローされます。 また、オペレーションの進行中に指定されたコレクションが変更された場合の、このオペレーションの動作は定義されていません。
      定義:
      drainTo、インタフェースBlockingQueue<E>
      パラメータ:
      c - 要素の転送先のコレクション
      戻り値:
      転送された要素の数
      例外:
      NullPointerException - 指定されたコレクションがnullである場合
      IllegalArgumentException - 指定されたコレクションがこのキューである場合、またはこのキューの要素のあるプロパティが原因で指定されたコレクションに追加できない場合
    • drainTo

      public int drainTo(Collection<? super E> c, int maxElements)
      インタフェースからコピーされた説明: BlockingQueue
      指定された数以内の利用可能な要素をこのキューから削除し、指定されたコレクションに追加します。 コレクションcに要素を追加しようとしたときに障害が発生すると、関連する例外のスロー時に、要素がこのキューとコレクションのいずれにも存在しない場合と、一方または両方に存在する場合があります。 キューをそれ自体に排出しようとすると、IllegalArgumentExceptionがスローされます。 また、オペレーションの進行中に指定されたコレクションが変更された場合の、このオペレーションの動作は定義されていません。
      定義:
      drainTo、インタフェースBlockingQueue<E>
      パラメータ:
      c - 要素の転送先のコレクション
      maxElements - 転送する要素の最大数
      戻り値:
      転送された要素の数
      例外:
      NullPointerException - 指定されたコレクションがnullである場合
      IllegalArgumentException - 指定されたコレクションがこのキューである場合、またはこのキューの要素のあるプロパティが原因で指定されたコレクションに追加できない場合
    • iterator

      public Iterator<E> iterator()
      このキュー内の要素を適切な順序で反復処理するイテレータを返します。 要素は最初(先頭)から最後(末尾)の順に返されます。

      返されるイテレータは弱一貫性を保持します。

      定義:
      iterator、インタフェースCollection<E>
      定義:
      iterator、インタフェースIterable<E>
      定義:
      iterator、クラスAbstractCollection<E>
      戻り値:
      キュー内の要素を適切な順序で繰返し処理するイテレータ
    • peek

      public E peek()
      インタフェースからコピーされた説明: Queue
      キューの先頭を取得しますが、削除しません。キューが空の場合はnullを返します。
      定義:
      peek、インタフェースQueue<E>
      戻り値:
      キューの先頭。キューが空の場合はnull
    • isEmpty

      public boolean isEmpty()
      キューに要素がない場合にtrueを返します。
      定義:
      isEmpty、インタフェースCollection<E>
      オーバーライド:
      isEmpty、クラスAbstractCollection<E>
      戻り値:
      キューに要素がない場合はtrue
    • hasWaitingConsumer

      public boolean hasWaitingConsumer()
      インタフェースからコピーされた説明: TransferQueue
      BlockingQueue.take()または時間指定のpoll経由で要素を受け取ることを待機しているコンシューマが少なくとも1つある場合、trueを返します。 戻り値は状況の瞬間的な状態です。
      定義:
      hasWaitingConsumer、インタフェースTransferQueue<E>
      戻り値:
      待機中のコンシューマが少なくとも1つ存在する場合はtrue
    • size

      public int size()
      キュー内にある要素の数を返します。 このキューにInteger.MAX_VALUEより多くの要素がある場合は、Integer.MAX_VALUEを返します。

      大半のコレクションとは異なり、このメソッドは一定時間のオペレーションではないことに留意してください。 これらのキューには非同期という特性があるため、現在の要素数を判定するにはO(n)トラバーサルが必要です。

      定義:
      size、インタフェースCollection<E>
      戻り値:
      キューの要素数
    • getWaitingConsumerCount

      public int getWaitingConsumerCount()
      インタフェースからコピーされた説明: TransferQueue
      BlockingQueue.take()または時間指定のpoll経由で要素を受け取ることを待機しているコンシューマの推定数を返します。 戻り値は状況の瞬間的な状態の近似であるため、コンシューマが完了したり、待機を中止したりした場合に不正確になることがあります。 この値は監視およびヒューリスティックな方法に役立つ場合がありますが、同期制御のためのものではありません。 このメソッドの実装は、TransferQueue.hasWaitingConsumer()の実装よりもかなり遅くなる可能性が高くなります。
      定義:
      getWaitingConsumerCount、インタフェースTransferQueue<E>
      戻り値:
      要素を受け取ることを待機しているコンシューマの数
    • remove

      public boolean remove(Object o)
      指定された要素の単一のインスタンスがこのキューに存在する場合は、キューから削除します。 つまり、キュー内に、o.equals(e)に該当する要素eが1つ以上含まれている場合は、そのような要素を削除します。 指定された要素がこのキューに含まれていた場合、つまり、呼出しの結果としてこのキューが変更された場合にtrueを返します。
      定義:
      remove、インタフェースBlockingQueue<E>
      定義:
      remove、インタフェースCollection<E>
      オーバーライド:
      remove、クラスAbstractCollection<E>
      パラメータ:
      o - キューから削除される要素(その要素が存在する場合)
      戻り値:
      この呼出しの結果、このキューが変更された場合はtrue
    • contains

      public boolean contains(Object o)
      指定された要素がキューに含まれている場合にtrueを返します。 つまり、このキュー内にo.equals(e)のような1つ以上の要素eが含まれている場合、trueを返します。
      定義:
      contains、インタフェースBlockingQueue<E>
      定義:
      contains、インタフェースCollection<E>
      オーバーライド:
      contains、クラスAbstractCollection<E>
      パラメータ:
      o - このキューに含まれているかどうかを調べるオブジェクト
      戻り値:
      指定された要素がこのキューに含まれている場合はtrue
    • remainingCapacity

      public int remainingCapacity()
      LinkedTransferQueueは容量制約を受けないため、常にInteger.MAX_VALUEを返します。
      定義:
      remainingCapacity、インタフェースBlockingQueue<E>
      戻り値:
      Integer.MAX_VALUE (BlockingQueue.remainingCapacity()で指定されているとおり)
    • removeIf

      public boolean removeIf(Predicate<? super E> filter)
      次のインタフェースからコピーされた説明: Collection
      指定された述語を満たすこのコレクションの要素をすべて削除します。 反復中に、または述語によってスローされたエラーまたは実行時例外は、呼出し側に中継されます。
      定義:
      removeIf、インタフェースCollection<E>
      パラメータ:
      filter - 削除される要素に対してtrueを返す述語
      戻り値:
      要素が削除された場合はtrue
      例外:
      NullPointerException - 指定されたフィルタがnullである場合
    • removeAll

      public boolean removeAll(Collection<?> c)
      次のクラスからコピーされた説明: AbstractCollection
      指定されたコレクションにも格納されているこのコレクションのすべての要素を削除します(オプションの操作)。 この呼出しの結果、このコレクションには指定されたコレクションと共通の要素はなくなります。
      定義:
      removeAll、インタフェースCollection<E>
      オーバーライド:
      removeAll、クラスAbstractCollection<E>
      パラメータ:
      c - このコレクションから削除される要素を含むコレクション
      戻り値:
      呼出しの結果としてこのコレクションが変更された場合はtrue
      例外:
      NullPointerException - このコレクションに1つ以上のnull要素が含まれており、指定されたコレクションがnull要素をサポートしない場合(オプション)、または指定されたコレクションがnullの場合
      関連項目:
    • retainAll

      public boolean retainAll(Collection<?> c)
      次のクラスからコピーされた説明: AbstractCollection
      このコレクションにおいて、指定されたコレクションに格納されている要素だけを保持します(オプションの操作)。 つまり、指定されたコレクションに格納されていないすべての要素をこのコレクションから削除します。
      定義:
      retainAll、インタフェースCollection<E>
      オーバーライド:
      retainAll、クラスAbstractCollection<E>
      パラメータ:
      c - このコレクションで保持される要素を含むコレクション
      戻り値:
      呼出しの結果としてこのコレクションが変更された場合はtrue
      例外:
      NullPointerException - このコレクションに1つ以上のnull要素が含まれており、指定されたコレクションがnull要素を許可しない場合(オプション)、または指定されたコレクションがnullの場合
      関連項目:
    • clear

      public void clear()
      クラスからコピーされた説明:AbstractQueue
      すべての要素をキューから削除します。 この呼出しが戻ると、キューは空になります。

      この実装は、nullが返されるまで、繰り返しpollを呼び出します。

      定義:
      clear、インタフェースCollection<E>
      オーバーライド:
      clear、クラスAbstractQueue<E>
    • forEach

      public void forEach(Consumer<? super E> action)
      インタフェースからコピーされた説明: Iterable
      Iterableの各要素に対して指定されたアクションを、すべての要素が処理されるか、アクションが例外をスローするまで実行します。 反復の順序でアクションが実行されます(その順序が指定されている場合)。 アクションによってスローされた例外は、呼出し側に中継されます。

      オーバーライドするクラスが並行変更ポリシーを指定していない限り、アクションが要素の基本ソースを変更する副作用を実行する場合、このメソッドの動作は指定されていません。

      定義:
      forEach、インタフェースIterable<E>
      パラメータ:
      action - 各要素に対して実行されるアクション
      例外:
      NullPointerException - 指定されたアクションがnullである場合