java - 在Java中安排任务每X天运行一次或仅执行一次

标签 java quartz-scheduler schedule

这里既是 stackoverflow 又是 Java 初学者。

所以我正在尝试在我的应用程序中实现调度程序。我希望某个进程/作业每隔 X 时间运行一次或仅运行一次。这个时间需要是可配置的,因此我创建了一个简单的 Schedule 对象,其中包含 startDatelastExecuted 等字段、频率枚举以及 getter 和 setter。

现在,很容易让它每 X 天执行一次任务,例如 - 我刚刚使用了 Groovy 的 TimeCategory并创建一个不断运行的线程,并检查 lastExecuted 和当前时间之间的时间是否超过 ScheduleFrequency enum 中指定的时间

问题 - 我如何处理月份?如果我将频率设置为每月,如何处理不同长度的月份?我想,一种替代方案是每个月都有一个大型 switch 语句。但这似乎不是一个很好的解决方案。是否可以以更优雅的方式做到这一点(最好没有任何额外的库或已弃用的 Java 方法,例如 Date 的 getDay() 方法等)

谢谢。

最佳答案

您可以使用 Calendar 类,即在每个月的 1 号安排一些事情:

Calendar now = Calendar.getInstance();

now.set(Calendar.DAY_OF_MONTH, 1);


for (int i = 0; i < 10; i++)
{
     now.add(Calendar.MONTH, 1);
     scheduler.scheduleAt(now); // or whatever you are using to schedule
}

关于java - 在Java中安排任务每X天运行一次或仅执行一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32655749/

相关文章:

java - 关于 JScrollPane 中 JTable 的列宽

java - 服务未在启动时注册

java - 我们可以创建同一个 java(spring) 批处理作业的多个实例吗?

c++ - 是否可以使用cocos2d-x调度器延迟一行代码?

overriding - ActiveMQ 覆盖预定消息

java - Android Studio或Eclipse使用Maven/Gradle

java - 合并/捆绑 DLL/LIB (C++/Java)

algorithm - 有约束的资源分配算法

java - Jacoco ant 任务 - 没有 jacoco.exec 输出

java - 如何在jsf网站后台运行线程?