0

次のコードを見てください

public class Test {

    public Test()
    {
        Timer timer = new Timer();
        timer.schedule(new TimerTask(){
        public void run()
        {
            System.out.println("Updated");
        }
        }, System.currentTimeMillis(),1000);



    }

    public static void main(String[]args)
    {
        new Test();
    }


}

ここでは、何も印刷されていないことがわかります。つまり、時間は予定されていません!何故ですか?タスクが毎秒発生するようにスケジュールしたい。助けてください!

4

4 に答える 4

6

Timerを実行する前に (約) 1363531420 ミリ秒待つように に指示していますTimerTask。これは 42 年まで続きます。を使用する必要がありますTimer.schedule(yourTask, 0, 1000)

于 2013-03-17T14:45:27.333 に答える
2

このコードを実行してみてください:

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

public class Test {

    public Test()
    {
        Timer timer = new Timer();
        timer.schedule(new TimerTask(){
        public void run()
        {
            System.out.println("Updated");
        }
        }, 0,1000);



    }

    public static void main(String[]args)
    {
        new Test();
    }


}
于 2013-03-17T14:45:45.237 に答える
2

javadocを見てください。2 つの方法があります。

schedule(TimerTask task, Date firstTime, long period) 
schedule(TimerTask task, long delay, long period) 

(TimerTask, long, long)つまり、最初はミリ単位で、その後は毎秒実行するようにタスクをスケジュールしますSystem.currentTimeMillis()。したがって、タスクは で初めて実行されThu Jun 01 06:45:28 BST 2056、それを確認します。

public static void main(String[] args) {        
    System.out.println(new Date(2*System.currentTimeMillis()));
}

メソッドをゼロで呼び出す必要があります。

    Timer timer = new Timer();
    timer.schedule(new TimerTask() {
        public void run() {
            System.out.println("Updated");
        }
    }, 0, 1000);

これは、最初は 0 ミリ秒で、その後は毎秒実行するようにタスクをスケジュールすることを意味します。

于 2013-03-17T14:47:52.357 に答える
0

遅延をミリ秒単位で現在の時間に設定しました(これは非常に長い時間になります:))。あなたはおそらくこれを意図していました:

public class Test {

    public Test()
    {
        Timer timer = new Timer();
        timer.schedule(new TimerTask(){
            public void run()
            {
                System.out.println("Updated");
            }
        }, new Date(System.currentTimeMillis()),1000); //<--- Notice a date is being constructed


    }

    public static void main(String[]args)
    {
        new Test();
    }

}

firstTime を現在の日付に設定する場所。

于 2013-03-17T14:54:10.180 に答える