با استفاده از Akka scheduler و کتابخانه Joda-Time و قرار دادن آن در متد onStart کلاس Global برنامه خود می توانید این کار را انجام دهید:
انجام یک کار هر هفته شنبه ساعت 15:
DateTime now = new DateTime();
DateTime plannedStart = new DateTime()
.withDayOfWeek(DateTimeConstants.SATURDAY)
.withHourOfDay(15)
.withMinuteOfHour(0)
.withSecondOfMinute(0)
.withMillisOfSecond(0);
DateTime nextRun = (now.isAfter(plannedStart))
? plannedStart.plusDays(7)
: plannedStart;
Long nextRunInSeconds = (long) secondsBetween(now, nextRun).getSeconds();
Akka.system().scheduler().schedule(
Duration.create(nextRunInSeconds, TimeUnit.SECONDS),
Duration.create(7, TimeUnit.DAYS) ,
new Runnable() {
public void run() {
Logger.info("-------------------------scheduler start : " + new DateTime());
}
},
Akka.system().dispatcher()
);
و یا انجام یک کار در نیمه شب هر شب:
DateTime now = new DateTime();
DateTime plannedStart = new DateTime()
.withTimeAtStartOfDay();
DateTime nextRun = (now.isAfter(plannedStart))
? plannedStart.plusDays(1)
: plannedStart;
Long nextRunInSeconds = (long) secondsBetween(now, nextRun).getSeconds();
Akka.system().scheduler().schedule(
Duration.create(nextRunInSeconds, TimeUnit.SECONDS),
Duration.create(1, TimeUnit.DAYS) ,
new Runnable() {
public void run() {
Logger.info("-------------------------scheduler start : " + new DateTime());
}
},
Akka.system().dispatcher()
);