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

クラス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
関連項目: