如何在java中每晚6点运行一个方法?

时间:2012-02-07 20:47:54

标签: java concurrency

public ReportService() {
        super();
        // TODO Auto-generated constructor stub
        executorService = Executors.newSingleThreadScheduledExecutor();
        executorService.schedule(new Runnable() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                try {
                    exportToMailDaily();
                } catch (Throwable e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }, 1L, TimeUnit.DAYS);
    }

如何在每天晚上6点运行exportToMailDaily()方法。我在这里混淆1L, TimeUnit.DAYS ......如何做到这一点。

6 个答案:

答案 0 :(得分:4)

查看Quartz framework

答案 1 :(得分:4)

最简单的方法是使用Linux cron作业或Windows计划任务在适当的时间启动Java程序。

在Java中测试时间似乎是一种错综复杂的方法。

答案 2 :(得分:1)

以下是如何执行此操作的一个很好的演练:Java Practices

祝你好运。

答案 3 :(得分:0)

您应该始终运行程序或某些第三方或操作系统调度程序。无法在java中执行此操作。

答案 4 :(得分:0)

计算您需要睡觉的时间,并相应地睡觉。也许将睡眠时间限制在下一个整小时,因此您不会对计算夏令时的错误感到惊讶。每小时醒来一次,重新计算睡眠时间是相当便宜的。

暂停一台笔记本电脑,修理时钟等可能会让你失去同步。坚持已解决所有这些问题的cron等已建立的实用程序是一个好主意。

答案 5 :(得分:0)

使用java.util.Timer进行简单的计划工作。您并不需要直接使用执行程序。