如何在java中的指定时间自动执行函数

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

我从未使用过计时器类..

我有一个代码片段,我从谷歌,但我没有得到如何在此代码中设置function执行的用户特定时间细节..

这是代码片段..

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

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

请帮帮我。欢迎任何想法……提前致谢…

好的,所以我看了一下Timer类,发现你的方法几乎是正确的。 您需要稍微编辑代码才能获得所需的function。

 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”。 你必须弄清楚如何从用户那里获得输入(应该相当简单!)

我可以推荐一个很棒的石英库。 其主要目的是在特定时间开始工作。