1

このクラスの問題がどこにあるのか知りたいのですが、n秒ごとに何かを作るクラスを作っていますが、それは1回だけのようです。これがクラスです

import java.util.Timer;
import java.util.TimerTask;

public class Updater {
    private Timer timer;
    public Updater(int seconds){
        timer = new Timer();
        timer.schedule(new UpdaterTask(), seconds*1000);
    }
    class UpdaterTask extends TimerTask {
        public void run() {
            System.out.println(Math.random());
            timer.cancel();
        }
    }
}

そしてこれがテストです

public class TestUpdater {
    public static void main(String[] args){
        new Updater(1);
    }
}

このテストでは毎秒乱数を取得する必要があると思いますが、最初の 1 秒後にプロセスが終了します。悪い英語で申し訳ありませんが、何か提案をありがとう

4

3 に答える 3

0

スレッドが終了するmain()と、アプリケーションも終了します。

Thread.sleep(10000)コードの最後に追加するだけです。その後、10 秒間動作します。

cancel メソッドの使用方法については、この回答を参照してください。そこで使いたくなかったのだと思います。

スケジューリング タイプを変更し、使用します

timer.scheduleAtFixedRate(new UpdaterTask(), 0, seconds*1000);

于 2013-05-24T12:10:35.037 に答える