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

クラスDelayQueue<E extends Delayed>

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

public class DelayQueue<E extends Delayed> extends AbstractQueue<E> implements BlockingQueue<E>
Delayed要素のバインドされていない「ブロック・キュー」。この要素では、遅延が期限切れになると、要素が一般的に削除の対象になります。

getDelay(TimeUnit.NANOSECONDS)メソッドがゼロ以下の値を返す場合、要素はexpiredとみなされます。

要素が過去または将来(このような要素がある場合)の失効時間が最も早い要素の場合、その要素はキューの指導者とみなされます。

要素が過去の有効期限が最も早いexpired要素である場合、その要素はキューの期限切れヘッドとみなされます(その要素がある場合)。期限切れヘッドが存在する場合は、指導者でもあります。

このクラスはBlockingQueueインタフェースを実装しますが、次のメソッドは期限切れでない要素の存在を無視し、期限切れヘッドのみを削除するという点で、意図的にBlockingQueueの一般契約に違反します:

他のすべてのメソッドは、期限切れ要素と期限切れでない要素の両方に対して動作します。 たとえば、size()メソッドは、すべての要素の数を返します。 メソッドpeek()は、take()がブロックされてその要素が期限切れになるまで待機する場合でも、(non-null) 「指導者」を返すことができます。

このキューでは、null要素は許可されません。

このクラスとそのイテレータは、CollectionおよびIteratorインタフェースのオプション・メソッドすべてを実装します。 iterator()メソッド内で提供されるIteratorでは、特定の順序でDelayQueueの要素をトラバースすることは保証されません

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

導入されたバージョン:
1.5
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    新しいDelayQueueを作成します。これは、最初は空です。
    DelayQueue(Collection<? extends E> c)
    DelayQueueを作成します。これは、初期状態でDelayedインスタンスの指定されたコレクションの要素を含みます。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    boolean
    add(E e)
    指定された要素をこの遅延キューに挿入します。
    void
    すべての要素をこの遅延キューから原子的に削除します。
    int
    drainTo(Collection<? super E> c)
    このキューから利用可能なすべての要素を削除し、それらを指定されたコレクションに追加します。
    int
    drainTo(Collection<? super E> c, int maxElements)
    指定された数以内の利用可能な要素をこのキューから削除し、指定されたコレクションに追加します。
    このキュー内のすべての要素(期限切れと有効期限内の両方)についてのイテレータを返します。
    boolean
    offer(E e)
    指定された要素をこの遅延キューに挿入します。
    boolean
    offer(E e, long timeout, TimeUnit unit)
    指定された要素をこの遅延キューに挿入します。
    このキューの「指導者」を取得する(ただし削除しない)か、このキューが空の場合はnullを返します。
    このキューの「期限切れヘッド」を取得して削除するか、このキューに「失効した要素」がない場合はnullを返します。
    poll(long timeout, TimeUnit unit)
    このキューの「期限切れヘッド」を取得および削除し、必要に応じて、このキューで「失効した要素」が使用可能になるか、指定された待機時間が期限切れになるまで待機します。
    void
    put(E e)
    指定された要素をこの遅延キューに挿入します。
    int
    DelayQueueは容量制限がないため、常にInteger.MAX_VALUEを返します。
    このキューの「期限切れヘッド」を取得して削除するか、このキューに「失効した要素」がない場合は例外をスローします。
    boolean
    指定された要素の単一のインスタンスがこのキューに存在する場合は、期限切れかどうかにかかわらず、キューから削除します。
    int
    このコレクション中の要素の数を返します。
    このキューの「期限切れヘッド」を取得および削除し、必要に応じて、このキューで「失効した要素」が使用可能になるまで待機します。
    このキューの要素がすべて含まれている配列を返します。
    <T> T[]
    toArray(T[] a)
    このキュー内のすべての要素を含む配列を返します。返される配列の実行時の型は、指定された配列の型です。

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

    addAll, element

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

    contains, containsAll, isEmpty, removeAll, retainAll, toString

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

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

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

    contains

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

    addAll, containsAll, equals, hashCode, isEmpty, parallelStream, removeAll, removeIf, retainAll, spliterator, stream, toArray

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

    forEach

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

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

    • DelayQueue

      public DelayQueue()
      新しいDelayQueueを作成します。これは、最初は空です。
    • DelayQueue

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

    • add

      public boolean add(E e)
      指定された要素をこの遅延キューに挿入します。
      定義:
      add、インタフェースBlockingQueue<E extends Delayed>
      定義:
      add、インタフェースCollection<E extends Delayed>
      定義:
      add、インタフェースQueue<E extends Delayed>
      オーバーライド:
      add、クラスAbstractQueue<E extends Delayed>
      パラメータ:
      e - 追加する要素
      戻り値:
      true (Collection.add(E)で指定されているとおり)
      例外:
      NullPointerException - 指定された要素がnullである場合
    • offer

      public boolean offer(E e)
      指定された要素をこの遅延キューに挿入します。
      定義:
      offer、インタフェースBlockingQueue<E extends Delayed>
      定義:
      offer、インタフェースQueue<E extends Delayed>
      パラメータ:
      e - 追加する要素
      戻り値:
      true
      例外:
      NullPointerException - 指定された要素がnullである場合
    • put

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

      public boolean offer(E e, long timeout, TimeUnit unit)
      指定された要素をこの遅延キューに挿入します。 キューがアンバウンド形式であるため、このメソッドはブロックを実行しません。
      定義:
      offer、インタフェースBlockingQueue<E extends Delayed>
      パラメータ:
      e - 追加する要素
      timeout - メソッドがブロックを実行することはないため、このパラメータは無視される
      unit - メソッドがブロックを実行することはないため、このパラメータは無視される
      戻り値:
      true
      例外:
      NullPointerException - 指定された要素がnullである場合
    • poll

      public E poll()
      このキューの「期限切れヘッド」を取得して削除するか、このキューに「失効した要素」がない場合はnullを返します。
      定義:
      poll、インタフェースQueue<E extends Delayed>
      戻り値:
      このキューの「期限切れヘッド」、またはこのキューに遅延が期限切れの要素がない場合はnull
    • take

      public E take() throws InterruptedException
      このキューの「期限切れヘッド」を取得および削除し、必要に応じて、このキューで「失効した要素」が使用可能になるまで待機します。
      定義:
      take、インタフェースBlockingQueue<E extends Delayed>
      戻り値:
      このキューの「期限切れヘッド」
      例外:
      InterruptedException - 待機中に割込みが発生した場合
    • poll

      public E poll(long timeout, TimeUnit unit) throws InterruptedException
      このキューの「期限切れヘッド」を取得および削除し、必要に応じて、このキューで「失効した要素」が使用可能になるか、指定された待機時間が期限切れになるまで待機します。
      定義:
      poll、インタフェースBlockingQueue<E extends Delayed>
      パラメータ:
      timeout - 処理を中止するまでの待機時間。単位はunit
      unit - timeoutパラメータの解釈方法を決定するTimeUnit
      戻り値:
      このキューの「期限切れヘッド」、または指定した待機時間が経過した後、遅延が失効した要素が使用可能になる前にnull
      例外:
      InterruptedException - 待機中に割込みが発生した場合
    • remove

      public E remove()
      このキューの「期限切れヘッド」を取得して削除するか、このキューに「失効した要素」がない場合は例外をスローします。
      定義:
      インタフェースQueue<E extends Delayed>内のremove
      オーバーライド:
      クラスAbstractQueue<E extends Delayed>remove
      戻り値:
      このキューの「期限切れヘッド」
      例外:
      NoSuchElementException - このキューに遅延が失効した要素がない場合
    • peek

      public E peek()
      このキューの「指導者」を取得する(ただし削除しない)か、このキューが空の場合はnullを返します。 pollとは異なり、キュー内に期限切れの要素が存在しない場合、このメソッドは次に期限が切れる要素を返します(存在する場合)。
      定義:
      peek、インタフェースQueue<E extends Delayed>
      戻り値:
      このキューの「指導者」、またはこのキューが空の場合はnull
    • size

      public int size()
      次のインタフェースからコピーされた説明: Collection
      このコレクション中の要素の数を返します。 このコレクションに複数のInteger.MAX_VALUE要素が含まれている場合は、Integer.MAX_VALUEを返します。
      定義:
      size、インタフェースCollection<E extends Delayed>
      戻り値:
      このコレクションの要素数
    • drainTo

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

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

      public void clear()
      すべての要素をこの遅延キューから原子的に削除します。 この呼出しが戻ると、キューは空になります。 有効期限内の遅延を持つ要素は待機せず、単にキューから破棄されます。
      定義:
      clear、インタフェースCollection<E extends Delayed>
      オーバーライド:
      clear、クラスAbstractQueue<E extends Delayed>
    • remainingCapacity

      public int remainingCapacity()
      DelayQueueは容量制限がないため、常にInteger.MAX_VALUEを返します。
      定義:
      remainingCapacity、インタフェースBlockingQueue<E extends Delayed>
      戻り値:
      Integer.MAX_VALUE
    • toArray

      public Object[] toArray()
      このキューの要素がすべて含まれている配列を返します。 返される配列の要素に特定の順序はありません。

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

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

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

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

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

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

      次のコードを使用すると、新しく割り当てられたDelayedの配列に遅延キューをダンプできます。

       Delayed[] a = q.toArray(new Delayed[0]);
      toArray(new Object[0])は、機能の点でtoArray()と同一です。

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

      public boolean remove(Object o)
      指定された要素の単一のインスタンスがこのキューに存在する場合は、期限切れかどうかにかかわらず、キューから削除します。
      定義:
      remove、インタフェースBlockingQueue<E extends Delayed>
      定義:
      remove、インタフェースCollection<E extends Delayed>
      オーバーライド:
      remove、クラスAbstractCollection<E extends Delayed>
      パラメータ:
      o - このコレクションから削除される要素(その要素が存在する場合)
      戻り値:
      この呼出しの結果として要素が削除された場合はtrue
    • iterator

      public Iterator<E> iterator()
      このキュー内のすべての要素(期限切れと有効期限内の両方)についてのイテレータを返します。 イテレータは特定の順序で要素を返しません。

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

      定義:
      iterator、インタフェースCollection<E extends Delayed>
      定義:
      iterator、インタフェースIterable<E extends Delayed>
      定義:
      iterator、クラスAbstractCollection<E extends Delayed>
      戻り値:
      このキュー内の要素のイテレータ