我有一个运行 2 个独立的独立 java 轮询工具的场景,它将以 5 分钟的固定间隔运行一些特定的任务。
我的场景是(对于每个轮询服务):
1)如果任务 T0 需要超过 5 分钟才能运行,同时 5 分钟后 T5 来并尝试执行,我会丢弃它,而不是等待或重新启动(丢弃重叠任务)
2) 下一个任务将在 T10 正常开始。
我的问题是使用 Quartz 会过分吗?如果我使用 TaskExecutorService,我如何检查时间 X,一旦任务在时间 X-5 开始,我应该丢弃它。
注意:1)我必须使用JDK <= 6.0
2)我没有在像spring这样的任何框架下使用。
3)它是一个桌面工具,所以我需要启动它并且它会运行..
任何代码片段或方向表示赞赏。
更新以下评论的答案:
是的,它在单个工具中运行的任务之间。工具不同,工具之间没有联系,它们将单独运行,没有关系。
单个工具以 5 分钟的间隔运行相同的任务(就像每个文件分钟一样,它会在目录中查找文件,如果找到,则解析这些文件并使用它们)。
例如,如果任务当前从第一分钟开始运行(可能需要任何时间),则在 5 分钟后,该工具再次启动该任务以查找新文件,但这次它不会解析/使用它,因为前一个任务已经在运行处理一些文件。所以新任务将不会执行,系统将转储它(没有队列/没有等待/没有顺序作业)。
另一个新任务将再次运行 5 倍时间,如果没有其他任务在运行,它将解析和处理这些文件。