[Seasar-user:15173] Re: [s2chronos] トリガメソッドが呼ばれるタイミング

Junichi Kato [E-MAIL ADDRESS DELETED]
2008年 7月 28日 (月) 11:51:43 JST


加藤です.


2008/07/28 11:22 Tetsuya Anzawa <[E-MAIL ADDRESS DELETED]>:
> 安澤です。
> ご回答ありがとうございます。
>
> 文中にコメントです。
>
>>>> また、タスク処理中(initialize~doTask~destroy)のタスク監視の動作は
>>>> どんな感じになるのでしょうか?
>>
>> initializeメソッド
>> do~メソッド
>> destroyメソッド
>> のことをタスクメソッドと呼んでいます。
>>
>> isStartTaskがtrueを返すとスケジューラのスレッドプールからinitializeを呼び出し、
>> initializeメソッドのアノテーションや戻り値から次に実行するべきdoから始まる
>> タスクメソッドを取得して、同じくスレッドプールからdo~メソッドが実行されます。
>> do~メソッドにも次に遷移すべきメソッドをアノテーションや戻り値で定義できます
>> のでタスクのフローを記述できます。
>> すべてのdo~メソッドが終了したら、最後にdestroyメソッドが呼ばれてタスクの
>> 一連の処理は終了します。
>>
>>>> こちらでログ出力して確認した限りでは、タスク起動中はタスクの監視は
>>>> 行われていないようでした。
>>
>> はい。その通りです。
>
> となると、トリガクラスのisShutdownTask()によるタスクの即時シャットダウンって
> どうなりますか?

isShutdownTaskがtrueを返すと,スケジューラから,
タスククラスと関連つけられたFuture<V>のcancel(false)が実行されます.
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/concurrent/Future.html#cancel(boolean)

JavaDocの説明のとおりです.タスクメソッドがまだ実行されていなければ実行が取り消されます.
しかし,実行中ならタスクメソッドを実行するスレッドに対して割り込みが発生します.

この割り込みでは,InterruptedExceptionがスローされますので,タスクメソッドでは,
InterruptedExceptionが発生した際にループから抜けれるように実装するか,
InterruptedExceptionをcatchしないようにしてください.
他には,Thead#isInterruptedメソッドで割り込みが発生したかどうかチェックすることができます.

そうすれば,isShutdownTaskによって即座にタスクを終了させることができます.

よろしくお願いします.







>
>>
>>
>>
>> --
>> /**
>> * name : Junichi Kato
>> * email : [E-MAIL ADDRESS DELETED]
>> *
>> * blog : http://d.hatena.ne.jp/j5ik2o/
>> *
>> * commiting projects :
>> * http://jiemamy.org/
>> * http://s2chronos.sandbox.seasar.org/
>> * http://s2config.sandbox.seasar.org/
>> */
>> _______________________________________________
>> Seasar-user mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>



-- 
/**
 * name : Junichi Kato
 * email : [E-MAIL ADDRESS DELETED]
 *
 * blog : http://d.hatena.ne.jp/j5ik2o/
 *
 * commiting projects :
 * http://jiemamy.org/
 * http://s2chronos.sandbox.seasar.org/
 * http://s2config.sandbox.seasar.org/
 */


Seasar-user メーリングリストの案内