こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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");
}
}

投稿日時 - 2009-01-30 16:34:05

QNo.4674438

暇なときに回答ください

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

回数制限のある 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();
   }
  }
 }
}

投稿日時 - 2009-01-30 17:53:21

お礼

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

投稿日時 - 2009-01-30 18:26:56

ANo.2

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.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();
}
}
}

これじゃだめ?

投稿日時 - 2009-01-30 17:35:16

お礼

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

投稿日時 - 2009-01-30 18:30:02

あなたにオススメの質問