心魅 - cocoromi -

半角スペース時々全角

TimerとTimerTaskでタイムアウトしたらリトライ、しなかったらキャンセルみたいなことをやる

あるメソッドを呼び出した後、一定時間以内にあるイベントが発生するかもしくは、
一定時間経過したらもう一度メソッドを呼び出したいという時がある。


そう言うときはTimer:schedule(TimerTask,long);を使う。

TimerTask task;
Timer timer;
public void triggerMethod(){
   //ここで新しく作るのがポイント
   //タスクは使い回しが出来ない
   task = new SomeTimerTask(); 
   timer.schedule(task , delay);
}

public void someEventHandler(){
   task.cancel();
}

class SomeTimerTask extends TimerTask{
   public void run(){
      triggerMethod();
   }
}