|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectjava.util.AbstractCollection<E>
java.util.AbstractQueue<E>
java.util.concurrent.ArrayBlockingQueue<E>
jp.terasoluna.fw.collector.concurrent.ArrayBlockingQueueEx<E>
E - コレクション内に存在する要素の型public class ArrayBlockingQueueEx<E>
AbstractCollector用ArrayBlockingQueueサブクラス。
ArrayBlockingQueue.peek()と AbstractCollection.isEmpty()に、 キューが空であれば、キューに要素が入るか、キューイング終了フラグが上がるまで 待つ機能をつけている。
ArrayBlockingQueue内の、ブロック制御を行っているConditionフィールドは サブクラスに公開されていないため、 このクラスではArrayBlockingQueueと冗長な実装をしている。
実装はAbstractCollectorに使用されるものに絞っているため、 すべてのメソッドが使用できるわけではない。
このクラスでオーバーライドしているメソッド以外で、 キューの状態を変更するメソッドや、待ちが発生するメソッドを実行してはならない。
キューに要素を詰め終わった後は、キューに要素を詰めるスレッドで、必ずfinishQueueingメソッドを実行すること。
| フィールドの概要 | |
|---|---|
protected int |
capacity
キューサイズ。 |
protected boolean |
finishQueueingFlag
キューイング終了フラグ。 |
protected Condition |
notEmpty
キューが空でなくなったときに送信されるシグナル。 |
protected Condition |
notFull
キューがFullでなくなったときに送信されるシグナル。 |
protected ReentrantLock |
queueLock
キューの操作を同期化するロック。 |
| コンストラクタの概要 | |
|---|---|
ArrayBlockingQueueEx(int capacity)
指定された (固定) 容量およびデフォルトのアクセスポリシーを使用して、ArrayBlockingQueue を作成する。 |
|
ArrayBlockingQueueEx(int capacity,
boolean fair)
指定された (固定) 容量および指定されたアクセスポリシーを使用して、ArrayBlockingQueue を作成する。 |
|
| メソッドの概要 | |
|---|---|
void |
finishQueueing()
キューイングの終了を通知する。 |
boolean |
isEmpty()
キューに要素がない場合に true を返す。 |
boolean |
offer(E o)
可能であれば、このキューの末尾に指定された要素を挿入する。 |
boolean |
offer(E o,
long timeout,
TimeUnit unit)
指定された要素をこのキューの末尾に挿入する。 |
E |
peek()
キューの先頭を取得するが、削除しない。 |
E |
poll(long timeout,
TimeUnit unit)
このキューの先頭を取得および削除する。 |
void |
put(E o)
指定された要素をこのキューの末尾に追加する。 |
| クラス java.util.concurrent.ArrayBlockingQueue から継承されたメソッド |
|---|
add, clear, contains, drainTo, drainTo, iterator, poll, remainingCapacity, remove, size, take, toArray, toArray, toString |
| クラス java.util.AbstractQueue から継承されたメソッド |
|---|
addAll, element, remove |
| クラス java.util.AbstractCollection から継承されたメソッド |
|---|
containsAll, removeAll, retainAll |
| クラス java.lang.Object から継承されたメソッド |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| インタフェース java.util.concurrent.BlockingQueue から継承されたメソッド |
|---|
add, contains, drainTo, drainTo, remainingCapacity, remove, take |
| インタフェース java.util.Queue から継承されたメソッド |
|---|
element, poll, remove |
| インタフェース java.util.Collection から継承されたメソッド |
|---|
addAll, clear, containsAll, equals, hashCode, iterator, removeAll, retainAll, size, toArray, toArray |
| フィールドの詳細 |
|---|
protected final ReentrantLock queueLock
protected final Condition notEmpty
protected final Condition notFull
protected final int capacity
protected volatile boolean finishQueueingFlag
| コンストラクタの詳細 |
|---|
public ArrayBlockingQueueEx(int capacity,
boolean fair)
capacity - キューの容量fair - true の場合、挿入または削除時にブロックされたスレッドに対するキューアクセスは、FIFO の順序で処理される。 false の場合、アクセス順序は指定されない。ArrayBlockingQueue.ArrayBlockingQueue(int, boolean)public ArrayBlockingQueueEx(int capacity)
capacity - キューの容量ArrayBlockingQueue.ArrayBlockingQueue(int)| メソッドの詳細 |
|---|
public void finishQueueing()
キューに要素が入るのを待っているスレッドがいる場合、そのブロックを解除する。 キューに要素を詰めるスレッドは、キューイングが完了したあとで、必ずこのメソッドを実行すること。
NotificationBlockingQueue<E> 内の finishQueueing
public boolean offer(E o,
long timeout,
TimeUnit unit)
throws InterruptedException
このメソッドの定義は、ArrayBlockingQueue.offer(Object, long, TimeUnit)と同じ。
BlockingQueue<E> 内の offerArrayBlockingQueue<E> 内の offero - 追加する要素timeout - 処理を中止するまでの待機時間。単位は unitunit - timeout パラメータの解釈方法を指定する TimeUnit
InterruptedException - 待機中に割り込みが発生した場合
NullPointerException - 指定された要素が null である場合ArrayBlockingQueue.offer(Object, long, TimeUnit)public boolean offer(E o)
このメソッドの定義は、ArrayBlockingQueue.offer(Object)と同じ。
BlockingQueue<E> 内の offerQueue<E> 内の offerArrayBlockingQueue<E> 内の offero - 追加する要素
NullPointerException - 指定された要素が null である場合ArrayBlockingQueue.offer(Object)
public void put(E o)
throws InterruptedException
BlockingQueue<E> 内の putArrayBlockingQueue<E> 内の puto - 追加する要素
InterruptedException - 待機中に割り込みが発生した場合
NullPointerException - 指定された要素が null である場合public E peek()
拡張仕様: キューが空の場合は、キューに要素が入るか、キューイングの終了が通知されるまで待つ。
キューイングの終了が通知された後、キューが空の場合は null を返す。
キューに要素がある場合や、キューイングの終了が通知された後の仕様は、 ArrayBlockingQueue.peek()と同じ。
Queue<E> 内の peekArrayBlockingQueue<E> 内の peek
public E poll(long timeout,
TimeUnit unit)
throws InterruptedException
拡張仕様: キューイングの終了が通知された後、キューが空の場合は、タイムアウトを待たずに null を返す。
キューイングの終了が通知される前の仕様は、 ArrayBlockingQueue.poll(long, TimeUnit)と同じ。
BlockingQueue<E> 内の pollArrayBlockingQueue<E> 内の polltimeout - 処理を中止するまでの待機時間。単位は unitunit - timeout パラメータの解釈方法を指定する TimeUnit
InterruptedException - 待機中に割り込みが発生した場合public boolean isEmpty()
拡張仕様: キューが空の場合は、キューに要素が入るか、キューイングの終了が通知されるまで待つ。
キューイングの終了が通知された後、キューが空の場合は true を返す。
Collection<E> 内の isEmptyAbstractCollection<E> 内の isEmpty
|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||