E
- コレクション内に存在する要素の型public class ArrayBlockingQueueEx<E> extends ArrayBlockingQueue<E> implements NotificationBlockingQueue<E>
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()
このキューの先頭を取得および削除する。
|
E |
poll(long timeout,
TimeUnit unit)
このキューの先頭を取得および削除する。
|
void |
put(E o)
指定された要素をこのキューの末尾に追加する。
|
add, clear, contains, drainTo, drainTo, iterator, remainingCapacity, remove, size, take, toArray, toArray, toString
addAll, element, remove
containsAll, removeAll, retainAll
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
add, contains, drainTo, drainTo, remainingCapacity, remove, take
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()
キューに要素が入るのを待っているスレッドがいる場合、そのブロックを解除する。 キューに要素を詰めるスレッドは、キューイングが完了したあとで、必ずこのメソッドを実行すること。
finishQueueing
インタフェース内 NotificationBlockingQueue<E>
public boolean offer(E o, long timeout, TimeUnit unit) throws InterruptedException
このメソッドの定義は、ArrayBlockingQueue.offer(Object, long, TimeUnit)
と同じ。
offer
インタフェース内 BlockingQueue<E>
offer
クラス内 ArrayBlockingQueue<E>
o
- 追加する要素timeout
- 処理を中止するまでの待機時間。単位は unitunit
- timeout パラメータの解釈方法を指定する TimeUnitInterruptedException
- 待機中に割り込みが発生した場合NullPointerException
- 指定された要素が null である場合ArrayBlockingQueue.offer(Object, long, TimeUnit)
public boolean offer(E o)
このメソッドの定義は、ArrayBlockingQueue.offer(Object)
と同じ。
offer
インタフェース内 BlockingQueue<E>
offer
インタフェース内 Queue<E>
offer
クラス内 ArrayBlockingQueue<E>
o
- 追加する要素NullPointerException
- 指定された要素が null である場合ArrayBlockingQueue.offer(Object)
public void put(E o) throws InterruptedException
put
インタフェース内 BlockingQueue<E>
put
クラス内 ArrayBlockingQueue<E>
o
- 追加する要素InterruptedException
- 待機中に割り込みが発生した場合NullPointerException
- 指定された要素が null である場合public E peek()
拡張仕様: キューが空の場合は、キューに要素が入るか、キューイングの終了が通知されるまで待つ。
キューイングの終了が通知された後、キューが空の場合は null を返す。
キューに要素がある場合や、キューイングの終了が通知された後の仕様は、 ArrayBlockingQueue.peek()
と同じ。
public E poll(long timeout, TimeUnit unit) throws InterruptedException
拡張仕様: キューイングの終了が通知された後、キューが空の場合は、タイムアウトを待たずに null を返す。
キューイングの終了が通知される前の仕様は、 ArrayBlockingQueue.poll(long, TimeUnit)
と同じ。
poll
インタフェース内 BlockingQueue<E>
poll
クラス内 ArrayBlockingQueue<E>
timeout
- 処理を中止するまでの待機時間。単位は unitunit
- timeout パラメータの解釈方法を指定する TimeUnitInterruptedException
- 待機中に割り込みが発生した場合public E poll()
public boolean isEmpty()
拡張仕様: キューが空の場合は、キューに要素が入るか、キューイングの終了が通知されるまで待つ。
キューイングの終了が通知された後、キューが空の場合は true を返す。
isEmpty
インタフェース内 Collection<E>
isEmpty
クラス内 AbstractCollection<E>
Copyright © 2014 NTT DATA Corporation.