是否可以在 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 中运行,则该功能将毫无用处,因为用户还可以实时查看他们的收件箱,因此通知将是多余的。
最佳答案
不是在 JVM 内部,因为一旦 JVM 终止,它就不会运行来执行作业。您可以使用类似 cron 的工具或 at安排一个新的 JVM。如果您可以让 JVM 继续执行,那么您可以使用 JVM 来安排作业(您可以使用类似 quartz-scheduler 的东西)。
关于java - JVM 终止后执行作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31283688/