这里有stackoverflow和Java初学者。
所以我试图在我的应用程序中实现调度程序。我希望某个进程/作业每隔X个时间运行一次或只运行一次。这个时间需要是可配置的,所以我创建了一个简单的Schedule对象,其中包含lastExecuted
,lastExecuted
,频率和getter的枚举以及setter等字段。
现在,很容易让它每隔X天执行一次任务 - 我只是使用了Groovy的TimeCategory并创建了一个不断运行的线程并检查{{1}之间的时间当前时间超过frequency enum
Schedule
中指定的时间
问题 - 如何处理月份?如果我将频率设置为每月如何处理不同的月份长度?我想,另一种选择是每个月都有一个大的switch语句。但这似乎不是一个很好的解决方案。是否可以以更优雅的方式执行此操作(最好不使用任何其他库或弃用的Java方法,例如Date&#39的getDay()方法等。)
感谢。
答案 0 :(得分:1)
您可以使用日历类,即在每个月的第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
}
答案 1 :(得分:0)
虽然不推荐使用Date.getDay,但如果您阅读Javadoc on Date,则会指向弃用的替换方法。
在这种情况下,您可能希望使用Calendar类来检索日期和时间信息。