2017-04-12 13 views
0

私はしばらくしてからタスクをスケジュールする方法を探していますが、何かが発生した場合にタスクを遅らせる必要があります。例休止後のタスクのスケジューリング(リフレッシュ可能)

myMethod() { 
    some code... 

    new Timer().schedule(new TimerTask(){ 
      @Override 
      public void run(){ 
       LOGGER.info("close connexion"); 
      } 
     },1000); 

} 

については 私は)私はMyMethodは(再び来る場合は「実行」のタスクを再スケジュールする必要があります。 どのようにすればいいですか?

+0

別の方法で移動し、メソッドを呼び出しますか? – XtremeBaumer

+0

'TimerTask'の代わりに' ScheduledExecutorService'を使います。 'schedule()'から戻ってきた 'ScheduledFuture'を使って、遅延させたいときはいつでもタスクを取り消し、スケジュールを変更することができます。 – azurefrog

答えて

0

溶液#1

それはあなたの方法scheduleWithFixedDelayを与えるのJava 1.5から利用可能であるScheduledExecutorServiceで確認してください - それだけで達成した後、あなたのタスクを、スケジュールし直します。方法の最後に、scheduleメソッドを使用してタスクを再スケジュールするもう1つの方法

解決方法#2 - 同じメソッドシグネチャに近いメソッドがSpring TaskSchedulerに存在しますが、注釈付きメソッドの助けを借りて行うことができます。サービス。