JavaTM 2 Platform
Standard Ed. 5.0

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

puttake を待機し、その逆も実行する必要があるブロックキュー。同期キューは、内部容量を一切持ちません。要素は、取得を試みても存在するのみであるため、同期キューで peek を実行することはできません。別のスレッドが削除を試みていないかぎり、どのメソッドを使用しても要素を追加することはできません。反復するものが存在しないため、反復は実行できません。キューの「先頭」は最初にキューに入れられたスレッドがキューに追加を試みる要素です。キューに入れられたスレッドが存在しない場合、追加される要素は存在せず、先頭は null になります。他の Collection メソッド (たとえば contains) のために、SynchronousQueue は空のコレクションとして動作します。このキューは、null 要素を許可しません。

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

このクラスは、待機中のプロデューサおよびコンシューマスレッドの順序付けを決定するオプションの均等性ポリシーをサポートします。デフォルトでは、この順序付けは保証されていません。ただし、true に設定された均等性ポリシーを使用して構築されたキューでは、スレッドが FIFO の順序でアクセスすることが許可されます。通常は、均等性によりスループットが低下しますが、変動性も低下するため、スループットが極端に少なくなることはありません。

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

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

導入されたバージョン:
1.5
関連項目:
直列化された形式

コンストラクタの概要
SynchronousQueue()
          不均等アクセスポリシーを使用して、SynchronousQueue を作成します。
SynchronousQueue(boolean fair)
          指定された均等性ポリシーを使用して、SynchronousQueue を作成します。
 
メソッドの概要
 void clear()
          何も行いません。
 boolean contains(Object o)
          常に false を返します。
 boolean containsAll(Collection<?> c)
          指定されたコレクションが空でない場合、false を返します。
 int drainTo(Collection<? super E> c)
          利用可能なすべての要素をこのキューから削除して、指定されたコレクションに追加します。
 int drainTo(Collection<? super E> c, int maxElements)
          指定された数以内の利用可能な要素をこのキューから削除して、指定されたコレクションに追加します。
 boolean isEmpty()
          常に true を返します。
 Iterator<E> iterator()
          hasNext が常に false を返す空の反復子を返します。
 boolean offer(E o)
          別のスレッドが指定された要素の受け取りを待機している場合、このキューにそれを挿入します。
 boolean offer(E o, long timeout, TimeUnit unit)
          指定された要素をこのキューに挿入します。
 E peek()
          常に null を返します。
 E poll()
          現在、別のスレッドが要素を利用可能にしている場合、このキューの先頭を取得して削除します。
 E poll(long timeout, TimeUnit unit)
          キューの先頭を取得して削除します。
 void put(E o)
          指定された要素をこのキューに追加します。
 int remainingCapacity()
          常にゼロを返します。
 boolean remove(Object o)
          常に false を返します。
 boolean removeAll(Collection<?> c)
          常に false を返します。
 boolean retainAll(Collection<?> c)
          常に false を返します。
 int size()
          常にゼロを返します。
 E take()
          このキューの先頭を取得して削除します。
 Object[] toArray()
          長さゼロの配列を返します。
<T> T[]
toArray(T[] a)
          指定された配列のゼロ番目の要素を null に設定して (配列がゼロでない長さを保持する場合)、それを返します。
 
クラス java.util.AbstractQueue から継承されたメソッド
add, addAll, element, remove
 
クラス java.util.AbstractCollection から継承されたメソッド
toString
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
インタフェース java.util.concurrent.BlockingQueue から継承されたメソッド
add
 
インタフェース java.util.Queue から継承されたメソッド
element, remove
 
インタフェース java.util.Collection から継承されたメソッド
addAll, equals, hashCode
 

コンストラクタの詳細

SynchronousQueue

public SynchronousQueue()
不均等アクセスポリシーを使用して、SynchronousQueue を作成します。


SynchronousQueue

public SynchronousQueue(boolean fair)
指定された均等性ポリシーを使用して、SynchronousQueue を作成します。

パラメータ:
fair - true の場合、スレッドはアクセスの FIFO 順で競合する。そうでない場合、順序は指定されない
メソッドの詳細

put

public void put(E o)
         throws InterruptedException
指定された要素をこのキューに追加します。必要に応じ、別のスレッドがそれを受け取るまで待機します。

定義:
インタフェース BlockingQueue<E> 内の put
パラメータ:
o - 追加する要素
例外:
InterruptedException - 待機中に割り込みが発生した場合
NullPointerException - 指定された要素が null である場合

offer

public boolean offer(E o,
                     long timeout,
                     TimeUnit unit)
              throws InterruptedException
指定された要素をこのキューに挿入します。必要に応じ、別のスレッドがそれを受け取るのを指定された待機時間まで待機します。

定義:
インタフェース BlockingQueue<E> 内の offer
パラメータ:
o - 追加する要素
timeout - 処理を中止するまでの待機時間。単位は unit
unit - timeout パラメータの解釈方法を指定する TimeUnit
戻り値:
成功した場合は true、コンシューマが現れる前に指定された待機時間が経過した場合は false
例外:
InterruptedException - 待機中に割り込みが発生した場合
NullPointerException - 指定された要素が null である場合

take

public E take()
       throws InterruptedException
このキューの先頭を取得して削除します。必要に応じ、別のスレッドがそれを挿入するのを待機します。

定義:
インタフェース BlockingQueue<E> 内の take
戻り値:
キューの先頭
例外:
InterruptedException - 待機中に割り込みが発生した場合

poll

public E poll(long timeout,
              TimeUnit unit)
       throws InterruptedException
キューの先頭を取得して削除します。必要に応じ、別のスレッドがそれを挿入するのを指定された待機時間まで待機します。

定義:
インタフェース BlockingQueue<E> 内の poll
パラメータ:
timeout - 処理を中止するまでの待機時間。単位は unit
unit - timeout パラメータの解釈方法を指定する TimeUnit
戻り値:
このキューの先頭。指定された待機時間が経過しても要素が存在しない場合は null
例外:
InterruptedException - 待機中に割り込みが発生した場合

offer

public boolean offer(E o)
別のスレッドが指定された要素の受け取りを待機している場合、このキューにそれを挿入します。

定義:
インタフェース BlockingQueue<E> 内の offer
定義:
インタフェース Queue<E> 内の offer
パラメータ:
o - 追加する要素
戻り値:
要素をこのキューに追加可能な場合は true、そうでない場合は false
例外:
NullPointerException - 指定された要素が null である場合

poll

public E poll()
現在、別のスレッドが要素を利用可能にしている場合、このキューの先頭を取得して削除します。

定義:
インタフェース Queue<E> 内の poll
戻り値:
キューの先頭。利用可能な要素が存在しない場合は null

isEmpty

public boolean isEmpty()
常に true を返します。SynchronousQueue は内部容量を保持しません。

定義:
インタフェース Collection<E> 内の isEmpty
オーバーライド:
クラス AbstractCollection<E> 内の isEmpty
戻り値:
true

size

public int size()
常にゼロを返します。SynchronousQueue は内部容量を保持しません。

定義:
インタフェース Collection<E> 内の size
定義:
クラス AbstractCollection<E> 内の size
戻り値:
ゼロ

remainingCapacity

public int remainingCapacity()
常にゼロを返します。SynchronousQueue は内部容量を保持しません。

定義:
インタフェース BlockingQueue<E> 内の remainingCapacity
戻り値:
ゼロ

clear

public void clear()
何も行いません。SynchronousQueue は内部容量を保持しません。

定義:
インタフェース Collection<E> 内の clear
オーバーライド:
クラス AbstractQueue<E> 内の clear

contains

public boolean contains(Object o)
常に false を返します。SynchronousQueue は内部容量を保持しません。

定義:
インタフェース Collection<E> 内の contains
オーバーライド:
クラス AbstractCollection<E> 内の contains
パラメータ:
o - 要素
戻り値:
false

remove

public boolean remove(Object o)
常に false を返します。SynchronousQueue は内部容量を保持しません。

定義:
インタフェース Collection<E> 内の remove
オーバーライド:
クラス AbstractCollection<E> 内の remove
パラメータ:
o - 削除する要素
戻り値:
false

containsAll

public boolean containsAll(Collection<?> c)
指定されたコレクションが空でない場合、false を返します。SynchronousQueue は内部容量を保持しません。

定義:
インタフェース Collection<E> 内の containsAll
オーバーライド:
クラス AbstractCollection<E> 内の containsAll
パラメータ:
c - コレクション
戻り値:
指定されたコレクションが空でない場合は false
関連項目:
AbstractCollection.contains(Object)

removeAll

public boolean removeAll(Collection<?> c)
常に false を返します。SynchronousQueue は内部容量を保持しません。

定義:
インタフェース Collection<E> 内の removeAll
オーバーライド:
クラス AbstractCollection<E> 内の removeAll
パラメータ:
c - コレクション
戻り値:
false
関連項目:
AbstractCollection.remove(Object), AbstractCollection.contains(Object)

retainAll

public boolean retainAll(Collection<?> c)
常に false を返します。SynchronousQueue は内部容量を保持しません。

定義:
インタフェース Collection<E> 内の retainAll
オーバーライド:
クラス AbstractCollection<E> 内の retainAll
パラメータ:
c - コレクション
戻り値:
false
関連項目:
AbstractCollection.remove(Object), AbstractCollection.contains(Object)

peek

public E peek()
常に null を返します。要素がアクティブに待機されていない場合、SynchronousQueue は要素を返しません。

定義:
インタフェース Queue<E> 内の peek
戻り値:
null

iterator

public Iterator<E> iterator()
hasNext が常に false を返す空の反復子を返します。

定義:
インタフェース Iterable<E> 内の iterator
定義:
インタフェース Collection<E> 内の iterator
定義:
クラス AbstractCollection<E> 内の iterator
戻り値:
空の反復子

toArray

public Object[] toArray()
長さゼロの配列を返します。

定義:
インタフェース Collection<E> 内の toArray
オーバーライド:
クラス AbstractCollection<E> 内の toArray
戻り値:
長さゼロの配列

toArray

public <T> T[] toArray(T[] a)
指定された配列のゼロ番目の要素を null に設定して (配列がゼロでない長さを保持する場合)、それを返します。

定義:
インタフェース Collection<E> 内の toArray
オーバーライド:
クラス AbstractCollection<E> 内の toArray
パラメータ:
a - 配列
戻り値:
指定された配列

drainTo

public int drainTo(Collection<? super E> c)
インタフェース BlockingQueue の記述:
利用可能なすべての要素をこのキューから削除して、指定されたコレクションに追加します。この操作は、このキューを繰り返しポーリングする場合よりも効率的な場合があります。コレクション c に要素の add 操作を試みる際に障害が発生した場合、関連する例外のスロー時に要素がコレクションのいずれにも存在しないか、一方または両方に存在する可能性があります。キューを自分自身に排出することを試みると、IllegalArgumentException がスローされます。また、この操作の進行中に指定されたコレクションが変更された場合の動作は、定義されていません。

定義:
インタフェース BlockingQueue<E> 内の drainTo
パラメータ:
c - 要素の転送先のコレクション
戻り値:
転送される要素の数

drainTo

public int drainTo(Collection<? super E> c,
                   int maxElements)
インタフェース BlockingQueue の記述:
指定された数以内の利用可能な要素をこのキューから削除して、指定されたコレクションに追加します。コレクション c に要素の add 操作を試みる際に障害が発生した場合、関連する例外のスロー時に要素がコレクションのいずれにも存在しないか、一方または両方に存在する可能性があります。キューを自分自身に排出することを試みると、IllegalArgumentException がスローされます。また、この操作の進行中に指定されたコレクションが変更された場合の動作は、定義されていません。

定義:
インタフェース BlockingQueue<E> 内の drainTo
パラメータ:
c - 要素の転送先のコレクション
maxElements - 転送する要素の最大数
戻り値:
転送される要素の数

JavaTM 2 Platform
Standard Ed. 5.0

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java 2 SDK SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。