クラスSynchronousQueue<E>

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

public class SynchronousQueue<E> extends AbstractQueue<E> implements BlockingQueue<E>, Serializable
各挿入オペレーションが別のスレッドによる対応する削除オペレーションを待機する必要がある(およびその逆の) ブロッキング・キューです。 同期キューには、内部容量がまったくありません。 要 が存在するのは削除しようとするときのみなので、同期キューでpeekを実行することはできません。別のスレッドが削除を試みていないかぎり、どのメソッドを使用しても要 を挿入することはできません。反復するものが存在しないため、反復は実行できません。 キューの先 は、挿入処理スレッドがキューに追 しようとする、最初にキューに入れられた要 です。そのようなキューに入れられたスレッドが存在しない 合は、削除できる要 はなく、poll()nullを返します。 他のCollectionメソッド(containsなど)の目的のために、SynchronousQueueは空のコレクションとして機能します。 このキューでは、null要 は許可されません。

同期キューは、CSPおよびAdaで使用されるランデブー・チャネルに似ています。 これらはハンドオフ設計に最適です。ハンドオフ設計では、情 、イベント、またはタスクを渡すために、あるスレッドで実行中のオブジェクトを別のスレッドで実行中のオブジェクトと同期させる必要があります。

このクラスでは、待機中のプロデューサおよびコンシューマ・スレッドの 序付けのためのオプションの公平性ポリシーをサポートします。 デフォルトでは、この 序付けは保証されていません。 た し、公平性をtrueに設定して構築されたキューでは、スレッドがFIFOの 序でアクセスすることが許可されます。

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

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

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

    コンストラクタ
    コンストラクタ
    説明
    不公平アクセス・ポリシーでSynchronousQueueを作成します。
    SynchronousQueue(boolean fair)
    指定された公平性ポリシーでSynchronousQueueを作成します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    void
    何も行いません。
    boolean
    常にfalseを返します。
    boolean
    指定されたコレクションが空でないかぎり、falseを返します。
    int
    drainTo(Collection<? super E> c)
    このキューから利用可能なすべての要 を削除し、それらを指定されたコレクションに追 します。
    int
    drainTo(Collection<? super E> c, int maxElements)
    指定された数以内の利用可能な要 をこのキューから削除し、指定されたコレクションに追 します。
    boolean
    常にtrueを返します。
    常にhasNextfalseを返す空のイテレータを返します。
    boolean
    offer(E e)
    別のスレッドが要 を受け取るのを待機している 合、その要 をこのキューに追 します。
    boolean
    offer(E e, long timeout, TimeUnit unit)
    指定された要 をこのキューに挿入します。必要に応じて、指定された待機時間まで別のスレッドが要 を受け取るのを待機します。
    常にnullを返します。
    別のスレッドが現在要 を利用可能にしている 合は、キューの先 を取得して削除します。
    poll(long timeout, TimeUnit unit)
    このキューの先 を取得および削除します。必要に応じて、指定された待機時間まで別のスレッドがその要 を挿入するのを待機します。
    void
    put(E e)
    指定された要 をこのキューに追 します。必要に応じて、別のスレッドが要 を受け取るまで待機します。
    int
    常にゼロを返します。
    boolean
    常にfalseを返します。
    boolean
    常にfalseを返します。
    boolean
    常にfalseを返します。
    int
    常にゼロを返します。
    trySplitを呼び出すと常にnullが返される空のスプリッテレータを返します。
    このキューの先 を取得して削除します。必要に応じて、別のスレッドがその要 を挿入するまで待機します。
    長さがゼロの配列を返します。
    <T> T[]
    toArray(T[] a)
    指定された配列の0(ゼロ)要 をnull (配列の長さがゼロ以外の 合)に設定し、それを返します。
    常に"[]"を返します。

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

    add, addAll, element, remove

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

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

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

    add

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

    addAll, equals, hashCode, parallelStream, removeIf, stream, toArray

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

    forEach

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

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

    • SynchronousQueue

      public SynchronousQueue()
      不公平アクセス・ポリシーでSynchronousQueueを作成します。
    • SynchronousQueue

      public SynchronousQueue(boolean fair)
      指定された公平性ポリシーでSynchronousQueueを作成します。
      パラメータ:
      fair - trueの 合、待機中のスレッドはFIFOの 序でアクセスが決定される。それ以外の 合、 序は指定されない。
  • メソッドの詳細

    • put

      public void put(E e) throws InterruptedException
      指定された要 をこのキューに追 します。必要に応じて、別のスレッドが要 を受け取るまで待機します。
      定義:
      put、インタフェースBlockingQueue<E>
      パラメータ:
      e - 追 する要 
      スロー:
      InterruptedException - 待機中に割込みが発生した 合
      NullPointerException - 指定された要 がnullである 合
    • offer

      public boolean offer(E e, long timeout, TimeUnit unit) throws InterruptedException
      指定された要 をこのキューに挿入します。必要に応じて、指定された待機時間まで別のスレッドが要 を受け取るのを待機します。
      定義:
      offer、インタフェースBlockingQueue<E>
      パラメータ:
      e - 追 する要 
      timeout - 処理を中止するまでの待機時間。単位はunit
      unit - timeoutパラメータの解釈方法を決定するTimeUnit
      戻り値:
      成功した 合はtrue。コンシューマが出現する前に指定された待機時間が経過した 合はfalse
      スロー:
      InterruptedException - 待機中に割込みが発生した 合
      NullPointerException - 指定された要 がnullである 合
    • offer

      public boolean offer(E e)
      別のスレッドが要 を受け取るのを待機している 合、その要 をこのキューに追 します。
      定義:
      offer、インタフェースBlockingQueue<E>
      定義:
      offer、インタフェースQueue<E>
      パラメータ:
      e - 追 する要 
      戻り値:
      このキューに要 が追 された 合はtrue、それ以外の 合はfalse
      スロー:
      NullPointerException - 指定された要 がnullである 合
    • take

      public E take() throws InterruptedException
      このキューの先 を取得して削除します。必要に応じて、別のスレッドがその要 を挿入するまで待機します。
      定義:
      take、インタフェースBlockingQueue<E>
      戻り値:
      キューの先 
      スロー:
      InterruptedException - 待機中に割込みが発生した 合
    • poll

      public E poll(long timeout, TimeUnit unit) throws InterruptedException
      このキューの先 を取得および削除します。必要に応じて、指定された待機時間まで別のスレッドがその要 を挿入するのを待機します。
      定義:
      poll、インタフェースBlockingQueue<E>
      パラメータ:
      timeout - 処理を中止するまでの待機時間。単位はunit
      unit - timeoutパラメータの解釈方法を決定するTimeUnit
      戻り値:
      このキューの先 。要 が存在する前に指定された待機時間が経過した 合はnull
      スロー:
      InterruptedException - 待機中に割込みが発生した 合
    • poll

      public E poll()
      別のスレッドが現在要 を利用可能にしている 合は、キューの先 を取得して削除します。
      定義:
      poll、インタフェースQueue<E>
      戻り値:
      このキューの先 。要 が使用できない 合はnull
    • isEmpty

      public boolean isEmpty()
      常にtrueを返します。 SynchronousQueueには内部容量がありません。
      定義:
      isEmpty、インタフェースCollection<E>
      オーバーライド:
      isEmpty、クラスAbstractCollection<E>
      戻り値:
      true
    • size

      public int size()
      常にゼロを返します。 SynchronousQueueには内部容量がありません。
      定義:
      size、インタフェースCollection<E>
      戻り値:
      zero
    • remainingCapacity

      public int remainingCapacity()
      常にゼロを返します。 SynchronousQueueには内部容量がありません。
      定義:
      remainingCapacity、インタフェースBlockingQueue<E>
      戻り値:
      zero
    • clear

      public void clear()
      何も行いません。 SynchronousQueueには内部容量がありません。
      定義:
      clear、インタフェースCollection<E>
      オーバーライド:
      clear、クラスAbstractQueue<E>
    • contains

      public boolean contains(Object o)
      常にfalseを返します。 SynchronousQueueには内部容量がありません。
      定義:
      contains、インタフェースBlockingQueue<E>
      定義:
      contains、インタフェースCollection<E>
      オーバーライド:
      contains、クラスAbstractCollection<E>
      パラメータ:
      o - 要 
      戻り値:
      false
    • remove

      public boolean remove(Object o)
      常にfalseを返します。 SynchronousQueueには内部容量がありません。
      定義:
      remove、インタフェースBlockingQueue<E>
      定義:
      remove、インタフェースCollection<E>
      オーバーライド:
      remove、クラスAbstractCollection<E>
      パラメータ:
      o - 削除する要 
      戻り値:
      false
    • containsAll

      public boolean containsAll(Collection<?> c)
      指定されたコレクションが空でないかぎり、falseを返します。 SynchronousQueueには内部容量がありません。
      定義:
      containsAll、インタフェースCollection<E>
      オーバーライド:
      containsAll、クラスAbstractCollection<E>
      パラメータ:
      c - コレクション
      戻り値:
      指定されたコレクションが空でないかぎりfalse
      関連 目:
    • removeAll

      public boolean removeAll(Collection<?> c)
      常にfalseを返します。 SynchronousQueueには内部容量がありません。
      定義:
      removeAll、インタフェースCollection<E>
      オーバーライド:
      removeAll、クラスAbstractCollection<E>
      パラメータ:
      c - コレクション
      戻り値:
      false
      関連 目:
    • retainAll

      public boolean retainAll(Collection<?> c)
      常にfalseを返します。 SynchronousQueueには内部容量がありません。
      定義:
      retainAll、インタフェースCollection<E>
      オーバーライド:
      retainAll、クラスAbstractCollection<E>
      パラメータ:
      c - コレクション
      戻り値:
      false
      関連 目:
    • peek

      public E peek()
      常にnullを返します。 アクティブに待機されないかぎり、SynchronousQueueは要 を返しません。
      定義:
      peek、インタフェースQueue<E>
      戻り値:
      null
    • iterator

      public Iterator<E> iterator()
      常にhasNextfalseを返す空のイテレータを返します。
      定義:
      iterator、インタフェースCollection<E>
      定義:
      iterator、インタフェースIterable<E>
      定義:
      iterator、クラスAbstractCollection<E>
      戻り値:
      空のイテレータ
    • spliterator

      public Spliterator<E> spliterator()
      trySplitを呼び出すと常にnullが返される空のスプリッテレータを返します。
      定義:
      spliterator、インタフェースCollection<E>
      定義:
      spliterator、インタフェースIterable<E>
      戻り値:
      空のスプリッテレータ
      導入されたバージョン:
      1.8
    • toArray

      public Object[] toArray()
      長さがゼロの配列を返します。
      定義:
      toArray、インタフェースCollection<E>
      オーバーライド:
      toArray、クラスAbstractCollection<E>
      戻り値:
      長さがゼロの配列
    • toArray

      public <T> T[] toArray(T[] a)
      指定された配列の0(ゼロ)要 をnull (配列の長さがゼロ以外の 合)に設定し、それを返します。
      定義:
      toArray、インタフェースCollection<E>
      オーバーライド:
      toArray、クラスAbstractCollection<E>
      型パラメータ:
      T - コレクションを 納する配列のコンポーネント型
      パラメータ:
      a - 配列
      戻り値:
      指定された配列
      スロー:
      NullPointerException - 指定された配列がnullである 合
    • toString

      public String toString()
      常に"[]"を返します。
      オーバーライド:
      toString、クラスAbstractCollection<E>
      戻り値:
      "[]"
    • drainTo

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

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