Springタイマーの実行をキャンセルするか、少なくともいくつかの条件に基づいて実行頻度を変更する必要があります。と の両方を使用していorg.springframework.scheduling.quartz.SimpleTriggerBean
ましorg.springframework.scheduling.timer.ScheduledTimerTask
た。それを行う方法を見つけることができません。
3 に答える
注:これはSpring 3.0+用です
や
TaskScheduler
などのサービスを使用します。TimerManagerTaskScheduler
ThreadPoolTaskScheduler
TaskScheduler.schedule*()
何らかのメソッドを呼び出してタスクをスケジュールし、返さScheduledFuture
れた .実行をキャンセルしたい場合は、 を呼び出し
ScheduledFuture.cancel()
ます。これにより、タスクの呼び出しが停止します。この時点で、必要に応じてTaskScheduler.schedule*()
、異なるパラメーターを使用してタスクを呼び出すことにより、スケジュールを変更できます。
これは最善の解決策ではありませんが、他に何も思いつかない場合は、イベントが発生するたびにチェックされるブール値を常に使用できます。ブール値が false の場合、timertask の run メソッドはすぐに終了する必要があります。 .
解決策は、id を org.springframework.scheduling.timer.TimerFactoryBean に割り当ててから、アプリケーションからこの Bean を取得し、それを Timer にキャストして、そのオブジェクトで cancel メソッドを呼び出すことです。