JVM终止后执行作业

时间:2015-07-08 04:45:13

标签: java jvm

是否可以在JVM终止后在JVM中调度作业以执行?

在我的应用程序中,用户可以选择接收收件箱中任何新电子邮件的通知。我使用Quartz完成了这项工作,EmailChecker作业计划每45秒执行一次。

public void checkInbox() throws SchedulerException
{
    JobDetail job = JobBuilder.newJob(EmailChecker.class)
            .withIdentity("emailJob", "jobGroup").build();

    Trigger trigger = TriggerBuilder.newTrigger()
            .withIdentity("emailTrigger", "jobGroup")
            .withSchedule(CronScheduleBuilder.cronSchedule("0/45 * * * * ?"))
            .build();

    Scheduler scheduler = new StdSchedulerFactory().getScheduler();
    scheduler.start();
    scheduler.scheduleJob(job, trigger);

}

这一切都运行正常,但仅在JVM运行时。退出后,将不再发送通知。

该应用程序是桌面应用程序,因此不会一直运行。如果它只在JVM内部工作,那么这个功能将毫无用处,因为用户也可以实时查看他们的收件箱,因此通知将是多余的。

1 个答案:

答案 0 :(得分:3)

不在JVM内部,因为一旦JVM终止,它就不会运行来执行作业。您可以使用cronat之类的工具来安排新的JVM。如果您可以让JVM执行,那么您可以使用JVM来安排作业(您可以使用quartz-scheduler之类的内容)。