JavaTM 2 Platform
Standard Ed. 5.0

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 and Michael L. Scott) を参照してください。

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

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

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

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

コンストラクタの概要
ConcurrentLinkedQueue()
          ConcurrentLinkedQueue を作成します。
ConcurrentLinkedQueue(Collection<? extends E> c)
          ConcurrentLinkedQueue を作成します。
 
メソッドの概要
 boolean add(E o)
          指定された要素をこのキューの末尾に追加します。
 boolean contains(Object o)
          コレクションに指定された要素がある場合に true を返します。
 boolean isEmpty()
          コレクションに要素がない場合に true を返します。
 Iterator<E> iterator()
          キュー内の要素を適切な順序で繰り返し処理する反復子を返します。
 boolean offer(E o)
          指定された要素をこのキューの末尾に挿入します。
 E peek()
          キューの先頭を取得しますが、削除しません。
 E poll()
          キューの先頭を取得および削除します。
 boolean remove(Object o)
          指定された要素のインスタンスがこのコレクションにあれば、そのインスタンスをコレクションから 1 つ削除します (任意のオペレーション)。
 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 - c またはその内部要素のいずれかが null の場合
メソッドの詳細

add

public boolean add(E o)
指定された要素をこのキューの末尾に追加します。

定義:
インタフェース Collection<E> 内の add
オーバーライド:
クラス AbstractQueue<E> 内の add
パラメータ:
o - 追加する要素
戻り値:
true (Collection.add の一般規約に従う)
例外:
NullPointerException - 指定された要素が null である場合

offer

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

定義:
インタフェース Queue<E> 内の offer
パラメータ:
o - 追加する要素
戻り値:
true (Queue.offer の一般規約に従う)
例外:
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()
クラス AbstractCollection の記述:
コレクションに要素がない場合に true を返します。

この実装は size() == 0 の結果を返します。

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

size

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

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

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

contains

public boolean contains(Object o)
クラス AbstractCollection の記述:
コレクションに指定された要素がある場合に true を返します。すなわち、このコレクションに (o==null ? e==null : o.equals(e)) である要素 e が 1 つ以上ある場合にだけ true を返します。

この実装はコレクションの各要素について、指定された要素と等しいかどうかを順に繰り返し確認します。

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

remove

public boolean remove(Object o)
クラス AbstractCollection の記述:
指定された要素のインスタンスがこのコレクションにあれば、そのインスタンスをコレクションから 1 つ削除します (任意のオペレーション)。より厳密に言えば、(o==null ? e==null : o.equals(e)) を満たす要素 e がコレクションに 1 つ以上あれば、e を 1 つ削除します。指定された要素がコレクションに含まれていた場合、すなわち、呼び出しの結果コレクションが変更された場合に true を返します。

この実装は、コレクションの内容を次々調べ、指定された要素を探します。要素があれば、反復子の remove メソッドを使ってコレクションから要素を削除します。

このコレクションの iterator メソッドが返す反復子が remove メソッドを実装せず、指定されたオブジェクトがこのコレクション内にある場合、この実装は UnsupportedOperationException をスローします。

定義:
インタフェース Collection<E> 内の remove
オーバーライド:
クラス AbstractCollection<E> 内の remove
パラメータ:
o - コレクションから削除される要素 (その要素がある場合)
戻り値:
コレクションに指定された要素がある場合は true

toArray

public Object[] toArray()
クラス AbstractCollection の記述:
このコレクションの要素がすべて格納されている配列を返します。反復子によって返される要素の順番をコレクションが保証する場合、このメソッドはそれと同じ順番で要素を返します。返される配列は、コレクションによって管理される参照関係を持たない点で安全性が保証されます。つまり、このメソッドは、コレクションの基が Array である場合でも、新しく配列を割り当てます。このため、呼び出し側は、返された配列を自由に変更できます。

この実装は、返される配列を割り当て、コレクションの各要素について繰り返します。つまり、各オブジェクト参照を配列の次の要素に格納するという処理を、第 0 要素から開始します。

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

toArray

public <T> T[] toArray(T[] a)
クラス AbstractCollection の記述:
このコレクション内のすべての要素を保持する配列を返します。返される配列の実行時の型は、指定された配列の型です。コレクションが指定された配列に収まる場合は、その中に返されます。そうでない場合は、指定された配列の実行時の型とコレクションのサイズを持つ新しい配列が割り当てられます。

指定された配列にコレクションが収まり、さらに空きがある場合、すなわち配列にコレクション以上の要素数がある場合には、コレクションの終端の直後にある配列の要素が null に設定されます。コレクションに null 要素がないことが呼び出し側でわかっている場合には、これにより、コレクションの長さを判定できます。

反復子によって要素が返される順序をコレクションが保証する場合、このメソッドは同じ順序で要素を返さなければなりません。

この実装は、配列がコレクションの格納に十分な大きさであるかを確認します。不十分な場合、この実装はリフレクションを使って、適切なサイズおよび型の配列を新しく割り当てます。次に、コレクションに対して、0 から順に配列の連続する要素へ各オブジェクト参照を格納する操作を反復します。配列がコレクションよりも大きい場合、コレクションの終端より後の最初の位置に null が格納されます。

定義:
インタフェース Collection<E> 内の toArray
オーバーライド:
クラス AbstractCollection<E> 内の toArray
パラメータ:
a - コレクションの要素の格納先の配列。配列のサイズが十分でない場合は、同じ実行時の型で新しい配列が格納用として割り当てられる
戻り値:
コレクションの要素を含む配列

iterator

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

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

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 も参照してください。