11

Springタイマーの実行をキャンセルするか、少なくともいくつかの条件に基づいて実行頻度を変更する必要があります。と の両方を使用していorg.springframework.scheduling.quartz.SimpleTriggerBeanましorg.springframework.scheduling.timer.ScheduledTimerTaskた。それを行う方法を見つけることができません。

4

3 に答える 3

20

:これはSpring 3.0+用です

  1. タスクのスケジューリングに関する Spring のドキュメントを読む

  2. TaskSchedulerなどのサービスを使用します。TimerManagerTaskSchedulerThreadPoolTaskScheduler

  3. TaskScheduler.schedule*()何らかのメソッドを呼び出してタスクをスケジュールし、返さScheduledFutureれた .

  4. 実行をキャンセルしたい場合は、 を呼び出しScheduledFuture.cancel()ます。これにより、タスクの呼び出しが停止します。この時点で、必要に応じてTaskScheduler.schedule*()、異なるパラメーターを使用してタスクを呼び出すことにより、スケジュールを変更できます。

于 2012-12-13T22:07:36.230 に答える
0

これは最善の解決策ではありませんが、他に何も思いつかない場合は、イベントが発生するたびにチェックされるブール値を常に使用できます。ブール値が false の場合、timertask の run メソッドはすぐに終了する必要があります。 .

于 2012-12-13T21:44:32.933 に答える
0

解決策は、id を org.springframework.scheduling.timer.TimerFactoryBean に割り当ててから、アプリケーションからこの Bean を取得し、それを Timer にキャストして、そのオブジェクトで cancel メソッドを呼び出すことです。

于 2012-12-20T14:19:46.110 に答える