是否可以在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内部工作,那么这个功能将毫无用处,因为用户也可以实时查看他们的收件箱,因此通知将是多余的。
答案 0 :(得分:3)
不在JVM内部,因为一旦JVM终止,它就不会运行来执行作业。您可以使用cron或at之类的工具来安排新的JVM。如果您可以让JVM执行,那么您可以使用JVM来安排作业(您可以使用quartz-scheduler之类的内容)。