インタフェースTransferQueue<E>

型パラメータ:
E - このキューに保持されている要素の型
すべてのスーパー・インタフェース:
BlockingQueue<E>, Collection<E>, Iterable<E>, Queue<E>
既知のすべての実装クラス:
LinkedTransferQueue

public interface TransferQueue<E> extends BlockingQueue<E>
コンシューマが要素を受け取るまでプロデューサが待機するBlockingQueue TransferQueueは、たとえば、プロデューサが(transfer(E)メソッドを使用して) takeまたはpollを呼び出しているコンシューマによる要素の受信を待機する場合と、受信を待機せずに(putメソッド経由で)要素をキューに入れる場合がある、メッセージ受渡しアプリケーションで役立つことがあります。 tryTransfer非ブロック・バージョンやタイムアウト・バージョンも使用できます。 また、項目を待機しているスレッドが存在するかどうかを(hasWaitingConsumer()経由で) TransferQueueに照会することもできます。これは、peek操作と逆になります。

ほかのブロッキング・キューと同様に、TransferQueueは、容量が制限される場合があります。 その場合、試行される転送操作では、最初に使用可能な容量の待機をブロックし、そのあとでコンシューマによる受信の待機をブロックすることができます。 SynchronousQueueなどの、容量が0のキューでは、puttransferは事実上同義であることに注意してください。

このインタフェースは、Java Collections Frameworkのメンバーです。

導入されたバージョン:
1.7
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    int
    BlockingQueue.take()または時間指定のpoll経由で要素を受け取ることを待機しているコンシューマの推定数を返します。
    boolean
    BlockingQueue.take()または時間指定のpoll経由で要素を受け取ることを待機しているコンシューマが少なくとも1つある場合、trueを返します。
    void
    待機する必要があれば待機し、要素をコンシューマに転送します。
    boolean
    可能な場合、待機中のコンシューマに要素をただちに転送します。
    boolean
    tryTransfer(E e, long timeout, TimeUnit unit)
    タイム・アウトが経過する前に要素をコンシューマに転送できる場合には、そうします。

    インタフェースで宣言されたメソッド BlockingQueue

    add, contains, drainTo, drainTo, offer, offer, poll, put, remainingCapacity, remove, take
    修飾子と型
    メソッド
    説明
    boolean
    add(E e)
    容量制限に違反することなく、指定された要素をこのキューにすぐに挿入できる場合はそうします。成功した場合はtrueを返し、その時点で使用可能な空き領域が存在しない場合はIllegalStateExceptionをスローします。
    boolean
    指定された要素がキューに含まれている場合にtrueを返します。
    int
    drainTo(Collection<? super E> c)
    このキューから利用可能なすべての要素を削除し、それらを指定されたコレクションに追加します。
    int
    drainTo(Collection<? super E> c, int maxElements)
    指定された数以内の利用可能な要素をこのキューから削除し、指定されたコレクションに追加します。
    boolean
    offer(E e)
    指定された要素を、このキューに容量制限に違反することなしにすぐに挿入できる場合には、そうします。成功した場合はtrueを返し、使用可能な空き領域がその時点で存在しない場合はfalseを返します。
    boolean
    offer(E e, long timeout, TimeUnit unit)
    指定された要素をこのキューに挿入します。必要に応じて、指定された時間まで空きが生じるのを待機します。
    poll(long timeout, TimeUnit unit)
    このキューの先頭を取得して削除します。必要に応じて、指定された待機時間まで要素が利用可能になるのを待機します。
    void
    put(E e)
    指定された要素をこのキューに挿入します。必要に応じて、空きが生じるまで待機します。
    int
    理想的な状態(メモリーやリソースの制限がない状態)で、このキューがブロックせずに受け入れることができる追加要素の数を返します。組込み制限が存在しない場合はInteger.MAX_VALUEを返します。
    boolean
    指定された要素の単一のインスタンスがこのキューに存在する場合は、キューから削除します。
    このキューの先頭を取得して削除します。必要に応じて、要素が利用可能になるまで待機します。

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

    addAll, clear, containsAll, equals, hashCode, isEmpty, iterator, parallelStream, removeAll, removeIf, retainAll, size, spliterator, stream, toArray, toArray, toArray
    修飾子と型
    メソッド
    説明
    boolean
    addAll(Collection<? extends E> c)
    指定されたコレクションのすべての要素をこのコレクションに追加します(オプションの操作)。
    void
    このコレクションからすべての要素を削除します(オプションの操作)。
    boolean
    指定したコレクションのすべての要素がこのコレクションに含まれている場合、trueを返します。
    boolean
    指定されたオブジェクトとこのコレクションが等しいかどうかを比較します。
    int
    コレクションのハッシュ・コード値を返します。
    boolean
    このコレクションに要素がない場合にtrueを返します。
    コレクションの要素のイテレータを返します。
    default Stream<E>
    このコレクションをソースとして、潜在的に並列のStreamを返します。
    boolean
    指定されたコレクションにも格納されているこのコレクションのすべての要素を削除します(オプションの操作)。
    default boolean
    removeIf(Predicate<? super E> filter)
    指定された述語(オプションの操作)を満たす、このコレクションのすべての要素を削除します。
    boolean
    このコレクションにおいて、指定されたコレクションに格納されている要素だけを保持します(オプションの操作)。
    int
    このコレクション中の要素の数を返します。
    default Spliterator<E>
    このコレクション内の要素に対するSpliteratorを作成します。
    default Stream<E>
    このコレクションをソースとして使用して、逐次的なStreamを返します。
    このコレクションの要素がすべて格納されている配列を返します。
    default <T> T[]
    toArray(IntFunction<T[]> generator)
    指定されたgenerator関数を使用してこのコレクションのすべての要素を含む配列を返し、返された配列を割り当てます。
    <T> T[]
    toArray(T[] a)
    このコレクション内のすべての要素を保持する配列を返します。返される配列の実行時の型は、指定された配列の型です。

    インタフェースIterableで宣言されたメソッド

    forEach
    修飾子と型
    メソッド
    説明
    default void
    forEach(Consumer<? super E> action)
    Iterableの各要素に対して指定されたアクションを、すべての要素が処理されるか、アクションが例外をスローするまで実行します。

    インタフェースキューで宣言されたメソッド

    element, peek, poll, remove
    修飾子と型
    メソッド
    説明
    キューの先頭を取得しますが、削除しません。
    キューの先頭を取得しますが、削除しません。キューが空の場合はnullを返します。
    キューの先頭を取得および削除します。キューが空の場合はnullを返します。
    キューの先頭を取得および削除します。
  • メソッドの詳細

    • tryTransfer

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

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

      パラメータ:
      e - 転送する要素
      戻り値:
      true - 要素が転送された場合。それ以外の場合はfalse
      スロー:
      ClassCastException - 指定された要素のクラスが原因で、このキューにその要素を追加できない場合
      NullPointerException - 指定された要素がnullである場合
      IllegalArgumentException - 指定された要素のあるプロパティが原因で、このキューに要素を追加できない場合
    • transfer

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

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

      パラメータ:
      e - 転送する要素
      スロー:
      InterruptedException - 待機中に割り込まれた場合。この場合、要素はエンキューされたままになりません
      ClassCastException - 指定された要素のクラスが原因で、このキューにその要素を追加できない場合
      NullPointerException - 指定された要素がnullである場合
      IllegalArgumentException - 指定された要素のあるプロパティが原因で、このキューに要素を追加できない場合
    • tryTransfer

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

      より正確には、指定された要素の受信を(BlockingQueue.take()または時間指定のpollで)すでに待機しているコンシューマが存在する場合はその要素をただちに転送し、それ以外の場合は要素がコンシューマによって受信されるまで待機します。その要素を転送できるようになる前に、指定された待機時間が経過した場合はfalseを返します。

      パラメータ:
      e - 転送する要素
      timeout - 処理を中止するまでの待機時間。単位はunit
      unit - timeoutパラメータの解釈方法を決定するTimeUnit
      戻り値:
      成功した場合はtrue、完了前に指定された待機時間が経過した場合はfalseで、この場合、要素はエンキューされたままになりません
      スロー:
      InterruptedException - 待機中に割り込まれた場合。この場合、要素はエンキューされたままになりません
      ClassCastException - 指定された要素のクラスが原因で、このキューにその要素を追加できない場合
      NullPointerException - 指定された要素がnullである場合
      IllegalArgumentException - 指定された要素のあるプロパティが原因で、このキューに要素を追加できない場合
    • hasWaitingConsumer

      boolean hasWaitingConsumer()
      BlockingQueue.take()または時間指定のpoll経由で要素を受け取ることを待機しているコンシューマが少なくとも1つある場合、trueを返します。 戻り値は状況の瞬間的な状態です。
      戻り値:
      待機中のコンシューマが少なくとも1つ存在する場合はtrue
    • getWaitingConsumerCount

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