如何在java中每晚6点运行一个方法?
如何在每晚6点运行exportToMailDaily方法。我搞混了1L,时间单位。天在这里。。。如何做到这一点。看看。最简单的方法是使用Linux cron作业或Windows计划任务在适当的时间启动Java程序如何在java中每晚6点运行一个方法?,java,concurrency,Java,Concurrency,如何在每晚6点运行exportToMailDaily方法。我搞混了1L,时间单位。天在这里。。。如何做到这一点。看看。最简单的方法是使用Linux cron作业或Windows计划任务在适当的时间启动Java程序 在Java中测试时间似乎是一种复杂的方法。您应该让您的程序或某个第三方或操作系统调度器一直运行。仅在java中无法做到这一点。计算您需要的睡眠时间,并相应地进行睡眠。也许把睡眠时间限制在下一个整小时,这样你就不会对计算夏令时的错误感到惊讶了。每小时醒来一次重新计算睡眠时间是相当便宜的
在Java中测试时间似乎是一种复杂的方法。您应该让您的程序或某个第三方或操作系统调度器一直运行。仅在java中无法做到这一点。计算您需要的睡眠时间,并相应地进行睡眠。也许把睡眠时间限制在下一个整小时,这样你就不会对计算夏令时的错误感到惊讶了。每小时醒来一次重新计算睡眠时间是相当便宜的
挂起笔记本电脑、修理时钟等可能仍然会让你失去同步。坚持使用已建立的实用程序,例如解决了所有这些问题的cron,这是一个好主意。用于简单的调度工作。您不需要直接使用executors来执行此操作。下面是一个很好的演练,介绍如何执行此操作:
祝你好运。@RameshK有关cron作业和crontab(通常在/etc/crontab中)的入门知识,请参见:它基本上指定了一个时间、日期等,以及在给定时间运行的脚本。你可以调用你的java程序在这个时候执行。明显的缺点是它引入的平台依赖性。你是否使用任何像Tomcat、JBoss这样的应用程序?有像Spring这样的框架吗?Unix或Wondows?时间单位不允许您指定下午6点。
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);
}