モジュール 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を作成します。
    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)
    指定された数以内の利用可能な要素をこのキューから削除し、指定されたコレクションに追加します。
    void forEach​(Consumer<? super E> action)
    Iterableの各要素に対して指定されたアクションを、すべての要素が処理されるか、アクションが例外をスローするまで実行します。
    boolean isEmpty()
    キューに要素がない場合にtrueを返します。
    Iterator<E> iterator()
    このキュー内の要素を適切な順序で反復処理するイテレータを返します。
    boolean offer​(E e)
    キューの末尾に、指定された要素を挿入します。
    boolean offer​(E e, long timeout, TimeUnit unit)
    キューの末尾に、指定された要素を挿入します。
    void put​(E e)
    キューの末尾に、指定された要素を挿入します。
    int remainingCapacity()
    LinkedTransferQueueは容量制約を受けないため、常にInteger.MAX_VALUEを返します。
    boolean remove​(Object o)
    指定された要素の単一のインスタンスがこのキューに存在する場合は、キューから削除します。
    boolean removeAll​(Collection<?> c)
    指定されたコレクションにも格納されているこのコレクションのすべての要素を削除します(オプションの操作)。
    boolean removeIf​(Predicate<? super E> filter)
    指定された述語を満たすこのコレクションの要素をすべて削除します。
    boolean retainAll​(Collection<?> c)
    このコレクションにおいて、指定されたコレクションに格納されている要素だけを保持します(オプションの操作)。
    int size()
    キュー内にある要素の数を返します。
    Spliterator<E> spliterator()
    このキュー内の要素に対するSpliteratorを返します。
    Object[] toArray()
    キュー内のすべての要素を適切な順序で含む配列を返します。
    <T> T[] toArray​(T[] a)
    キュー内のすべての要素を適切な順序で含む配列を返します。返される配列の実行時の型は、指定された配列の型になります。
    void transfer​(E e)
    待機する必要があれば待機し、要素をコンシューマに転送します。
    boolean tryTransfer​(E e)
    可能な場合、待機中のコンシューマに要素をただちに転送します。
    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.concurrent.BlockingQueueで宣言されたメソッド

    poll, take

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

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

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

    element, peek, poll, remove

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

    getWaitingConsumerCount, hasWaitingConsumer
  • コンストラクタの詳細

    • 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)
      可能な場合、待機中のコンシューマに要素をただちに転送します。

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

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

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

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

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

      public boolean tryTransfer​(E e, long timeout, TimeUnit unit) throws InterruptedException
      タイム・アウトが経過する前に要素をコンシューマに転送できる場合には、そうします。

      より正確には、指定された要素がすでに受信待ちのコンシューマが存在する場合は直ちにそれを転送し、そうでない場合は指定された要素をこのキューの末尾に挿入し、コンシューマが要素を受信するまで待ち、指定された待機時間が経過するとfalseを返します。要素を転送することができます。

      定義:
      tryTransfer、インタフェース: TransferQueue<E>
      パラメータ:
      e - 転送する要素
      timeout - 処理を中止するまでの待機時間。単位はunit
      unit - timeoutパラメータの解釈方法を決定するTimeUnit
      戻り値:
      成功した場合はtrue、完了前に指定された待機時間が経過した場合はfalseで、この場合、要素はエンキューされたままになりません
      例外:
      NullPointerException - 指定された要素がnullである場合
      InterruptedException - 待機中に割り込まれた場合。この場合、要素はエンキューされたままになりません
    • 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>
      戻り値:
      キュー内の要素を適切な順序で繰返し処理するイテレータ
    • isEmpty

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

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

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

      定義:
      size、インタフェース: Collection<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の場合
      関連項目:
      AbstractCollection.remove(Object), AbstractCollection.contains(Object)
    • retainAll

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

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

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

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