- ベストアンサー
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"); } }
- みんなの回答 (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(); } } } }
その他の回答 (1)
- ProKaseifu
- ベストアンサー率51% (98/192)
用途的に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(); } } } これじゃだめ?
お礼
Thread.sleep()というのがあるのですね。タイマーというキーワードで調べたので、Timerで質問してしまいましたが、こちらのほうがシンプルに出来ますね。。勉強になりました。有り難うございました。
お礼
問題なく実行で来ました。なるほどこうやってやればいいんですね。。 勉強になりました。ありがとうございます。