0

我有一个要求,我需要在用户设置的指定时间执行一个函数。该函数包含从数据库生成 pdf 文件并将其保存到机器的本地驱动器的代码。这里需要时间由用户设置,可以根据他的要求进行更改。

我从来没有使用过计时器类..

我有一个从谷歌获得的代码片段,但我没有得到如何设置用户特定时间详细信息以在此代码中执行函数..

这是代码片段..

class ReportGenerator extends TimerTask {

public void run() {
    System.out.println("Generating report");
    //TODO generate report
}
        }

  class MainApplication {

public static void main(String[] args) {
    Timer timer = new Timer();
    Calendar date = Calendar.getInstance();
    date.set(
            Calendar.DAY_OF_WEEK,
            Calendar.SATURDAY);
    date.set(Calendar.HOUR, 0);
    date.set(Calendar.MINUTE, 0);
    date.set(Calendar.SECOND, 0);
    date.set(Calendar.MILLISECOND, 0);
    // Schedule to run every Sunday in midnight
    timer.schedule(
            new ReportGenerator(),
            date.getTime(),
            1000 * 60 * 60 * 24 * 7);
}

}

我也没有得到这个代码片段的含义..这是什么意思?

 timer.schedule(
            new ReportGenerator(),
            date.getTime(),
            1000 * 60 * 60 * 24 * 7);
}

在上面的代码片段中,给定的函数将在每个星期六执行。

请帮助我。任何想法都受到热烈欢迎...提前谢谢..

4

2 回答 2

2

好的,所以我对 Timer 类进行了一些研究,发现您的方法几乎是正确的。您需要稍微编辑您的代码以获得所需的功能。

Calendar calendar = Calendar.getInstance();
date.set(Calendar.DAY_OF_WEEK, getUserInputDay()); //
calendar.set(Calendar.HOUR_OF_DAY, getUserInputHour());
calendar.set(Calendar.MINUTE, getUserInputMinute());
calendar.set(Calendar.SECOND, getUserInputSeconds());
Date time = calendar.getTime();

timer = new Timer();
timer.schedule(new ReportGenerator(), time);

这将启动一个计时器,在规定的时间启动“ReportGenerator”。您必须自己弄清楚如何从用户那里获取输入(应该相当简单!)

于 2013-11-09T15:03:33.053 回答
1

我可以推荐一个名为石英的好图书馆。它的主要目的是在给定的时间开始工作。

于 2013-11-09T11:31:53.957 回答