jp.terasoluna.fw.batch.standard
クラス StandardWorkQueue

java.lang.Object
  上位を拡張 jp.terasoluna.fw.batch.standard.StandardWorkQueue
すべての実装されたインタフェース:
WorkQueue
直系の既知のサブクラス:
WorkManagerTaskWorkQueue

public class StandardWorkQueue
extends java.lang.Object
implements WorkQueue

WorkQueue インタフェースの標準実装クラス。

この実装では、JDKの BLockingQueue によってキューイングを実現 する。

キューへの要素追加、キューからの要素取得の際には、ブロックし続けるのでは なく、タイムアウト時間だけ試行したあとで JobStatus をチェックし QueueStoppedException 例外をスローする。 キューへの要素追加、キューからの要素取得の際に、スレッドがインタラプトされた 際にもQueueStoppedException 例外をスローする。


フィールドの概要
static WorkUnit END_MARK
          キューの終端を示すマーク。
private  java.util.List<java.util.concurrent.Future<?>> futureResultList
          キューの要素の処理結果のリスト。
private  JobStatus jobStatus
          ジョブステータス。
private  java.util.concurrent.BlockingQueue<WorkUnit> queue
          キュー。
private  long queueCheckTimeout
          キューをチェックする際のタイムアウト。
 
コンストラクタの概要
StandardWorkQueue(int queueLength, JobStatus jobStatus)
          コンストラクタ。
 
メソッドの概要
 void addFutureJobResult(java.util.concurrent.Future<?> futureResult)
          ワーカの処理結果に非同期でアクセスするためのフューチャーを追加する。
private  void checkJobStatus()
          ジョブステータスをチェックする。
 void close()
          キューを終了する。
 void put(WorkUnit element)
          処理対象データをキューに追加する。
 void setQueueCheckTimeout(long timeout)
          タイムアウト設定する。
 WorkUnit take()
          キューの要素を取得する。
 void waitForAllWorkers()
          キューの要素を処理するすべてのワーカーの終了を待ち合わせる。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

queueCheckTimeout

private long queueCheckTimeout
キューをチェックする際のタイムアウト。(ミリ秒)


queue

private java.util.concurrent.BlockingQueue<WorkUnit> queue
キュー。


jobStatus

private JobStatus jobStatus
ジョブステータス。


futureResultList

private java.util.List<java.util.concurrent.Future<?>> futureResultList
キューの要素の処理結果のリスト。


END_MARK

public static final WorkUnit END_MARK
キューの終端を示すマーク。

コンストラクタの詳細

StandardWorkQueue

public StandardWorkQueue(int queueLength,
                         JobStatus jobStatus)
コンストラクタ。

パラメータ:
queueLength - キューの長さ
jobStatus - ジョブステータス
メソッドの詳細

put

public void put(WorkUnit element)
処理対象データをキューに追加する。

定義:
インタフェース WorkQueue 内の put
パラメータ:
element - キューに追加する要素

checkJobStatus

private void checkJobStatus()
ジョブステータスをチェックする。

中断終了が要求されているときは、ワーカ側で適切な中断処理を行う 必要があるため、何もしない。

強制終了が要求されているときには、JobStatus をシャットダウンに更新した後で、QueueingException 例外をスローする。

さらに、ジョブステータスが JobStatus.STATE.STARTED、 あるいは JobStatus.STATE.RESTARTED のどちらでもないときには、QueueingException 例外をスローする。


close

public void close()
キューを終了する。

キューの終端であるインスタンスをキューに追加する。

定義:
インタフェース WorkQueue 内の close

take

public WorkUnit take()
キューの要素を取得する。

定義:
インタフェース WorkQueue 内の take
戻り値:
キューの要素

waitForAllWorkers

public void waitForAllWorkers()
キューの要素を処理するすべてのワーカーの終了を待ち合わせる。

定義:
インタフェース WorkQueue 内の waitForAllWorkers

addFutureJobResult

public void addFutureJobResult(java.util.concurrent.Future<?> futureResult)
ワーカの処理結果に非同期でアクセスするためのフューチャーを追加する。

パラメータ:
futureResult - ワーカの処理結果に非同期でアクセスするためのフューチ ャー

setQueueCheckTimeout

public void setQueueCheckTimeout(long timeout)
タイムアウト設定する。

パラメータ:
timeout - タイムアウト(ミリ秒)