JavaTM Platform
Standard Ed. 6

java.util.concurrent
クラス ConcurrentLinkedQueue<E>

java.lang.Object
  上位を拡張 java.util.AbstractCollection<E>
      上位を拡張 java.util.AbstractQueue<E>
          上位を拡張 java.util.concurrent.ConcurrentLinkedQueue<E>
型パラメータ:
E - コレクション内に存在する要素の型
すべての実装されたインタフェース:
Serializable, Iterable<E>, Collection<E>, Queue<E>

public class ConcurrentLinkedQueue<E>
extends AbstractQueue<E>
implements Queue<E>, Serializable

リンクノードに基づく、アンバウンド形式のスレッドセーフなキューです。このキューは FIFO (先入れ先出し) で要素を順序付けします。キューの「先頭」はキューに入っていた時間がもっとも長い要素で、キューの「末尾」はキューに入っていた時間がもっとも短い要素です。新しい要素はキューの末尾に挿入され、キュー取得オペレーションにより、キューの先頭の要素が取得されます。共通のコレクションへのアクセスを多数のスレッドが共有する場合、ConcurrentLinkedQueue は選択肢として適切です。このキューでは、null 要素は許可されません。

この実装では、効率の良い「待機状態のない」アルゴリズムが使用されます。このアルゴリズムについては、「Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue Algorithms」 (Maged M. Michael、Michael L. Scott) を参照してください。

大半のコレクションとは異なり、size メソッドは一定時間のオペレーションではないことに留意してください。これらのキューには非同期という特性があるため、現在の要素数を判定するには要素全体をトラバースする必要があります。

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

メモリー整合性効果:ほかの並行処理コレクションと同様、オブジェクトを ConcurrentLinkedQueue に配置する前のスレッド内のアクションは、別のスレッドでのその要素へのアクセスまたは ConcurrentLinkedQueue からの削除に続くアクションよりも「前に発生」します。

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

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

コンストラクタの概要
ConcurrentLinkedQueue()
          ConcurrentLinkedQueue を作成します。
ConcurrentLinkedQueue(Collection<? extends E> c)
          指定されたコレクションの要素を初期状態で含む (要素はコレクションの反復子のトラバーサル順に追加) ConcurrentLinkedQueue を作成します。
 
メソッドの概要
 boolean add(E e)
          キューの末尾に、指定された要素を挿入します。
 boolean contains(Object o)
          指定された要素がキューに含まれている場合に true を返します。
 boolean isEmpty()
          キューに要素がない場合に true を返します。
 Iterator<E> iterator()
          このキュー内の要素を適切な順序で繰り返し処理する反復子を返します。
 boolean offer(E e)
          キューの末尾に、指定された要素を挿入します。
 E peek()
          キューの先頭を取得しますが、削除しません。
 E poll()
          キューの先頭を取得および削除します。
 boolean remove(Object o)
          指定された要素の単一のインスタンスがこのキューに存在する場合は、キューから削除します。
 int size()
          キュー内にある要素の数を返します。
 Object[] toArray()
          キュー内のすべての要素を適切な順序で含む配列を返します。
<T> T[]
toArray(T[] a)
          キュー内のすべての要素を適切な順序で含む配列を返します。
 
クラス java.util.AbstractQueue から継承されたメソッド
addAll, clear, element, remove
 
クラス java.util.AbstractCollection から継承されたメソッド
containsAll, removeAll, retainAll, toString
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
インタフェース java.util.Queue から継承されたメソッド
element, remove
 
インタフェース java.util.Collection から継承されたメソッド
addAll, clear, containsAll, equals, hashCode, removeAll, retainAll
 

コンストラクタの詳細

ConcurrentLinkedQueue

public ConcurrentLinkedQueue()
ConcurrentLinkedQueue を作成します。これは、最初は空です。


ConcurrentLinkedQueue

public ConcurrentLinkedQueue(Collection<? extends E> c)
指定されたコレクションの要素を初期状態で含む (要素はコレクションの反復子のトラバーサル順に追加) ConcurrentLinkedQueue を作成します。

パラメータ:
c - 初期状態で含む要素のコレクション
例外:
NullPointerException - 指定されたコレクションまたは、その要素のいずれかが null の場合
メソッドの詳細

add

public boolean add(E e)
キューの末尾に、指定された要素を挿入します。

定義:
インタフェース Collection<E> 内の add
定義:
インタフェース Queue<E> 内の add
オーバーライド:
クラス AbstractQueue<E> 内の add
パラメータ:
e - 追加する要素
戻り値:
true (Collection.add(E) で指定されているとおり)
例外:
NullPointerException - 指定された要素が null である場合

offer

public boolean offer(E e)
キューの末尾に、指定された要素を挿入します。

定義:
インタフェース Queue<E> 内の offer
パラメータ:
e - 追加する要素
戻り値:
true (Queue.offer(E) で指定されているとおり)
例外:
NullPointerException - 指定された要素が null である場合

poll

public E poll()
インタフェース Queue の記述:
キューの先頭を取得および削除します。キューが空の場合は null を返します。

定義:
インタフェース Queue<E> 内の poll
戻り値:
キューの先頭。キューが空の場合は null

peek

public E peek()
インタフェース Queue の記述:
キューの先頭を取得しますが、削除しません。キューが空の場合は null を返します。

定義:
インタフェース Queue<E> 内の peek
戻り値:
キューの先頭。キューが空の場合は null

isEmpty

public boolean isEmpty()
キューに要素がない場合に true を返します。

定義:
インタフェース Collection<E> 内の isEmpty
オーバーライド:
クラス AbstractCollection<E> 内の isEmpty
戻り値:
キューに要素がない場合は true

size

public int size()
キュー内にある要素の数を返します。このキューに Integer.MAX_VALUE より多くの要素がある場合は、Integer.MAX_VALUE を返します。

大半のコレクションとは異なり、このメソッドは一定時間のオペレーションではないことに留意してください。これらのキューには非同期という特性があるため、現在の要素数を判定するには O(n) トラバーサルが必要です。

定義:
インタフェース Collection<E> 内の size
定義:
クラス AbstractCollection<E> 内の size
戻り値:
キューの要素数

contains

public boolean contains(Object o)
指定された要素がキューに含まれている場合に true を返します。つまり、キューに、o.equals(e) となる要素 e が 1 つ以上含まれている場合にだけ true を返します。

定義:
インタフェース Collection<E> 内の contains
オーバーライド:
クラス AbstractCollection<E> 内の contains
パラメータ:
o - このキューに含まれているかどうかを調べるオブジェクト
戻り値:
指定された要素がこのキューに含まれている場合は true

remove

public boolean remove(Object o)
指定された要素の単一のインスタンスがこのキューに存在する場合は、キューから削除します。つまり、キュー内に、o.equals(e) に該当する要素 e が 1 つ以上含まれている場合は、そのような要素を削除します。指定された要素がこのキューに含まれていた場合、つまり、呼び出しの結果としてこのキューが変更された場合に true を返します。

定義:
インタフェース Collection<E> 内の remove
オーバーライド:
クラス AbstractCollection<E> 内の remove
パラメータ:
o - キューから削除される要素 (その要素が存在する場合)
戻り値:
この呼び出しの結果、このキューが変更された場合は true

toArray

public Object[] toArray()
キュー内のすべての要素を適切な順序で含む配列を返します。

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

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

定義:
インタフェース Collection<E> 内の toArray
オーバーライド:
クラス AbstractCollection<E> 内の toArray
戻り値:
キューのすべての要素が格納されている配列

toArray

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

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

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

x が、文字列だけからなるキューであることがわかっていると仮定します。次のコードを使うと、新しく割り当てられた String の配列にキューをダンプできます。

String[] y = x.toArray(new String[0]);
toArray(new Object[0]) は、機能の点で toArray() と同一です。

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

iterator

public Iterator<E> iterator()
このキュー内の要素を適切な順序で繰り返し処理する反復子を返します。返される反復子は「弱一貫性」を持つ反復子であり、ConcurrentModificationException をスローすることはなく、反復子の構築時に存在した要素をトラバースすることを保証します。また、構築後のすべての変更を反映します (ただし保証されてはいない)。

定義:
インタフェース Iterable<E> 内の iterator
定義:
インタフェース Collection<E> 内の iterator
定義:
クラス AbstractCollection<E> 内の iterator
戻り値:
キュー内の要素を適切な順序で繰り返し処理する反復子

JavaTM Platform
Standard Ed. 6

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

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