java - JVM 终止后执行作业

标签 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 中运行,则该功能将毫无用处,因为用户还可以实时查看他们的收件箱,因此通知将是多余的。

最佳答案

不是在 JVM 内部,因为一旦 JVM 终止,它就不会运行来执行作业。您可以使用类似 cron 的工具或 at安排一个新的 JVM。如果您可以让 JVM 继续执行,那么您可以使用 JVM 来安排作业(您可以使用类似 quartz-scheduler 的东西)。

关于java - JVM 终止后执行作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31283688/

相关文章:

java - JTextField/JPasswordField 的提示

java - hs_err_pid 文件中指定的堆的不同部分是什么?

Java JDBC 不是重用 String 值吗?

java - 如何为 openJDK8 HotSpot VM 设置开发环境?

Java - 启发式异常

java - 如何为 java SE 1.5 创建一个半透明(窗口下方的空间应该是可点击的)窗口?

java - 元空间抛出 OutOfMemoryException

scala - Scala 中固有层次结构中的对象初始化序列

eclipse - 无法在 Eclipse 中运行 Kotlin 应用程序

java - JFileChooser 不显示文本文件