• ベストアンサー

Timerについて教えて下さい

ある処理を5秒おきに、n回だけ実行したいのですが、「n回」をどのように実現したらよいのかわかりません。Timerクラスのメソッドにはないようなのですが。。簡単なサンプルコードを書いてみましたので以下を元に修正方法を教えて頂けると助かります。 import java.util.Timer; import java.util.TimerTask; public class TimerTest { public static void main(String[] args) { int n=10; Timer timer = new Timer(); timer.schedule(new sendTask(), 5000, 5000); } } class sendTask extends TimerTask { public void run() { System.out.println("Hello World"); } }

質問者が選んだベストアンサー

  • ベストアンサー
  • bleis
  • ベストアンサー率68% (11/16)
回答No.2

回数制限のある TimerTask を作ればいいと思います。 試してませんが、例えばこんな感じ。 import java.util.*; public final class Main {  public static void main(String[] args) {   Timer timer = new Timer();   timer.schedule(new LimitTimerTask(timer, 10), 5000, 5000);  } } final class LimitTimerTask extends TimerTask {  private final Timer timer;  private final int procNum;  private int count = 0;  LimitTimerTask(Timer timer, int procNum) {   this.timer = timer;   this.procNum = procNum;  }    public void run() {   System.out.println("Hello, world!");   synchronized (this) {    if (++count == procNum) {     this.cancel();     timer.cancel();    }   }  } }

rio_grande
質問者

お礼

問題なく実行で来ました。なるほどこうやってやればいいんですね。。 勉強になりました。ありがとうございます。

その他の回答 (1)

回答No.1

用途的にTimerを使う必要性を感じないんですが、Timerじゃなきゃダメなんですか? public static void main(String[] args) { for ( int i = 0 ; i < 5 ; i ++){ System.out.println("count:" + i); try { Thread.sleep(5000); } catch (InterruptedException e) { catch block e.printStackTrace(); } } } これじゃだめ?

rio_grande
質問者

お礼

Thread.sleep()というのがあるのですね。タイマーというキーワードで調べたので、Timerで質問してしまいましたが、こちらのほうがシンプルに出来ますね。。勉強になりました。有り難うございました。

関連するQ&A