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在执行你的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,有两种方法:

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

这意味着安排任务在零毫秒内第一次运行,之后每秒运行一次。

于 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 回答