jp.terasoluna.fw.collector.concurrent
クラス ArrayBlockingQueueEx<E>

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

public class ArrayBlockingQueueEx<E>
extends ArrayBlockingQueue<E>
implements NotificationBlockingQueue<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
 

フィールドの詳細

queueLock

protected final ReentrantLock queueLock
キューの操作を同期化するロック。


notEmpty

protected final Condition notEmpty
キューが空でなくなったときに送信されるシグナル。


notFull

protected final Condition notFull
キューがFullでなくなったときに送信されるシグナル。


capacity

protected final int capacity
キューサイズ。


finishQueueingFlag

protected volatile boolean finishQueueingFlag
キューイング終了フラグ。

コンストラクタの詳細

ArrayBlockingQueueEx

public ArrayBlockingQueueEx(int capacity,
                            boolean fair)
指定された (固定) 容量および指定されたアクセスポリシーを使用して、ArrayBlockingQueue を作成する。

パラメータ:
capacity - キューの容量
fair - true の場合、挿入または削除時にブロックされたスレッドに対するキューアクセスは、FIFO の順序で処理される。 false の場合、アクセス順序は指定されない。
関連項目:
ArrayBlockingQueue.ArrayBlockingQueue(int, boolean)

ArrayBlockingQueueEx

public ArrayBlockingQueueEx(int capacity)
指定された (固定) 容量およびデフォルトのアクセスポリシーを使用して、ArrayBlockingQueue を作成する。

パラメータ:
capacity - キューの容量
関連項目:
ArrayBlockingQueue.ArrayBlockingQueue(int)
メソッドの詳細

finishQueueing

public void finishQueueing()
キューイングの終了を通知する。

キューに要素が入るのを待っているスレッドがいる場合、そのブロックを解除する。 キューに要素を詰めるスレッドは、キューイングが完了したあとで、必ずこのメソッドを実行すること。

定義:
インタフェース NotificationBlockingQueue<E> 内の finishQueueing

offer

public boolean offer(E o,
                     long timeout,
                     TimeUnit unit)
              throws InterruptedException
指定された要素をこのキューの末尾に挿入する。必要に応じ、空間が利用可能になるのを指定された時間まで待機する。

このメソッドの定義は、ArrayBlockingQueue.offer(Object, long, TimeUnit)と同じ。

定義:
インタフェース BlockingQueue<E> 内の offer
オーバーライド:
クラス ArrayBlockingQueue<E> 内の offer
パラメータ:
o - 追加する要素
timeout - 処理を中止するまでの待機時間。単位は unit
unit - timeout パラメータの解釈方法を指定する TimeUnit
戻り値:
成功した場合は true、空間が利用可能になる前に指定された待機時間が経過した場合は false
例外:
InterruptedException - 待機中に割り込みが発生した場合
NullPointerException - 指定された要素が null である場合
関連項目:
ArrayBlockingQueue.offer(Object, long, TimeUnit)

offer

public boolean offer(E o)
可能であれば、このキューの末尾に指定された要素を挿入する。このキューがいっぱいである場合には、即座に返す。

このメソッドの定義は、ArrayBlockingQueue.offer(Object)と同じ。

定義:
インタフェース BlockingQueue<E> 内の offer
定義:
インタフェース Queue<E> 内の offer
オーバーライド:
クラス ArrayBlockingQueue<E> 内の offer
パラメータ:
o - 追加する要素
戻り値:
要素をこのキューに追加可能な場合は true、そうでない場合は false
例外:
NullPointerException - 指定された要素が null である場合
関連項目:
ArrayBlockingQueue.offer(Object)

put

public void put(E o)
         throws InterruptedException
指定された要素をこのキューの末尾に追加する。必要に応じ、空間が利用可能になるまで待機する。

定義:
インタフェース BlockingQueue<E> 内の put
オーバーライド:
クラス ArrayBlockingQueue<E> 内の put
パラメータ:
o - 追加する要素
例外:
InterruptedException - 待機中に割り込みが発生した場合
NullPointerException - 指定された要素が null である場合

peek

public E peek()
キューの先頭を取得するが、削除しない。

拡張仕様: キューが空の場合は、キューに要素が入るか、キューイングの終了が通知されるまで待つ。
キューイングの終了が通知された後、キューが空の場合は null を返す。

キューに要素がある場合や、キューイングの終了が通知された後の仕様は、 ArrayBlockingQueue.peek()と同じ。

定義:
インタフェース Queue<E> 内の peek
オーバーライド:
クラス ArrayBlockingQueue<E> 内の peek
戻り値:
キューの先頭。キューイング終了後にキューが空の場合は null

poll

public E poll(long timeout,
              TimeUnit unit)
       throws InterruptedException
このキューの先頭を取得および削除する。このキューに要素が存在しない場合は、必要に応じて指定された時間だけ待機する。

拡張仕様: キューイングの終了が通知された後、キューが空の場合は、タイムアウトを待たずに null を返す。

キューイングの終了が通知される前の仕様は、 ArrayBlockingQueue.poll(long, TimeUnit)と同じ。

定義:
インタフェース BlockingQueue<E> 内の poll
オーバーライド:
クラス ArrayBlockingQueue<E> 内の poll
パラメータ:
timeout - 処理を中止するまでの待機時間。単位は unit
unit - timeout パラメータの解釈方法を指定する TimeUnit
戻り値:
このキューの先頭。指定された待機時間が経過、あるいはキューイングの終了が通知された後も要素が存在しない場合は null
例外:
InterruptedException - 待機中に割り込みが発生した場合

isEmpty

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

拡張仕様: キューが空の場合は、キューに要素が入るか、キューイングの終了が通知されるまで待つ。
キューイングの終了が通知された後、キューが空の場合は true を返す。

定義:
インタフェース Collection<E> 内の isEmpty
オーバーライド:
クラス AbstractCollection<E> 内の isEmpty


Copyright © 2012. All Rights Reserved.