dポイントプレゼントキャンペーン実施中!

ある処理を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");
}
}

A 回答 (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();
   }
  }
 }
}
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/01/30 18:26

用途的に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();
}
}
}

これじゃだめ?
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/01/30 18:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!