这里既是 stackoverflow 又是 Java 初学者。
所以我正在尝试在我的应用程序中实现调度程序。我希望某个进程/作业每隔 X 时间运行一次或仅运行一次。这个时间需要是可配置的,因此我创建了一个简单的 Schedule 对象,其中包含 startDate
、lastExecuted
等字段、频率枚举以及 getter 和 setter。
现在,很容易让它每 X 天执行一次任务,例如 - 我刚刚使用了 Groovy 的 TimeCategory并创建一个不断运行的线程,并检查 lastExecuted
和当前时间之间的时间是否超过 Schedule
Frequency 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/