|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
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>
内の offer
ArrayBlockingQueue<E>
内の offer
o
- 追加する要素timeout
- 処理を中止するまでの待機時間。単位は unitunit
- timeout パラメータの解釈方法を指定する TimeUnit
InterruptedException
- 待機中に割り込みが発生した場合
NullPointerException
- 指定された要素が null である場合ArrayBlockingQueue.offer(Object, long, TimeUnit)
public boolean offer(E o)
このメソッドの定義は、ArrayBlockingQueue.offer(Object)
と同じ。
BlockingQueue<E>
内の offer
Queue<E>
内の offer
ArrayBlockingQueue<E>
内の offer
o
- 追加する要素
NullPointerException
- 指定された要素が null である場合ArrayBlockingQueue.offer(Object)
public void put(E o) throws InterruptedException
BlockingQueue<E>
内の put
ArrayBlockingQueue<E>
内の put
o
- 追加する要素
InterruptedException
- 待機中に割り込みが発生した場合
NullPointerException
- 指定された要素が null である場合public E peek()
拡張仕様: キューが空の場合は、キューに要素が入るか、キューイングの終了が通知されるまで待つ。
キューイングの終了が通知された後、キューが空の場合は null を返す。
キューに要素がある場合や、キューイングの終了が通知された後の仕様は、 ArrayBlockingQueue.peek()
と同じ。
Queue<E>
内の peek
ArrayBlockingQueue<E>
内の peek
public E poll(long timeout, TimeUnit unit) throws InterruptedException
拡張仕様: キューイングの終了が通知された後、キューが空の場合は、タイムアウトを待たずに null を返す。
キューイングの終了が通知される前の仕様は、 ArrayBlockingQueue.poll(long, TimeUnit)
と同じ。
BlockingQueue<E>
内の poll
ArrayBlockingQueue<E>
内の poll
timeout
- 処理を中止するまでの待機時間。単位は unitunit
- timeout パラメータの解釈方法を指定する TimeUnit
InterruptedException
- 待機中に割り込みが発生した場合public boolean isEmpty()
拡張仕様: キューが空の場合は、キューに要素が入るか、キューイングの終了が通知されるまで待つ。
キューイングの終了が通知された後、キューが空の場合は true を返す。
Collection<E>
内の isEmpty
AbstractCollection<E>
内の isEmpty
|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |