HeavyTask - 時間のかかる処理を実行する

トップ > チップス > HeavyTask - 時間のかかる処理を実行する
2012-02-13, heavy_task

/tips/lumber/commons/heavy_task info.lumber_mill.concurrent.HeavyTaskはjavaのCallableインタフェースを実装したクラスで、時間のかかる仕事を請け負います。以下のサンプルコードにあるように、現在の進捗を報告するためのヘルパメソッドや属性が予め用意されています。

: class SampleTask1 extends HeavyTask{ : @Override : public String call() throws Exception { : // ターゲット値(進捗の最大値)を10にセットする。 : setTarget(10); : // 重い仕事のつもり。各段階で進捗を出力し(println)、進捗をインクリメントする。 : for (int i = 0; i < 10; i++) { : Thread.sleep(500); : println(""+i+" .. "); : incrementCurrent(); : } : // 終了後戻り値オブジェクトを返す(今回はString)。 : return "タスク終了です。"; : } : } :

上記サンプルの利用方法は以下の通り。通常は、submit後に進捗モニタを起動するなどして、タスクの監視を行います。 : // タスクを実行する。 : SampleTask1 task = new SampleTask1(); : ExecutorService es = Executors.newSingleThreadExecutor(); : Future future = es.submit(task); : // タスクの結果を取得する。 : String result = future.get();

この記事は役に立ちましたか?