Java中的预定未来任务

时间:2017-03-04 03:32:10

标签: java scheduling

假设我的客户的帐户将在指定日期过期。我有一个任务编码将退役服务,但我不确定如何在指定日期启动完全任务。

我正在寻找一种方法来安排具有以下要求的一次性未来任务:

  • 任务必须在指定的时间启动一次。
  • 调度机制应该是持久的。如果服务器出现故障,任务列表应该恢复并启动停机期间经过的任何任务。

由于我使用Java,Quartz似乎是一个合理的选择,但我只是用它来进行基于cron的调度。我不确定它是否可以用于这样的事情或最佳实践 - 特别是对于持久性部分。

春天在这方面有什么用吗?

1 个答案:

答案 0 :(得分:0)

Java Timer类与自定义DeactivateCustomerTask相结合,除了通过电源故障问题的持久性之外,其他所有内容都足够了。

对于持久性,您可以保留一个序列化为HDD的List,然后在加电时再次读回。但是您必须已将客户数据保存到磁盘,因此通过扫描该数据库从头开始重新创建List更有意义。毕竟,当服务器处于脱机状态时,帐户可能已经过期,您需要在加电时专门处理该案例。

您可能已经意识到这一点,但DeactivateCustomerTask需要确保客户在创建后没有续订;并且续订方法需要确保DeactivateCustomerTask不会同时执行。