我尝试安排执行者与newsinglethreadscheduledexecutor安排的执行者,该executer在10天后发送报告(从系统初始化),20天后(从系统初始化)和每一个。这个月。我尝试使用每天运行的NewsingLeThreadScheduledexecutor,并检查今天是否在10天后。但是,我认为我们有一种更优雅的方式来与一些执行者解决此问题。您是否知道如何改进我的代码?
调度程序:
scheduler.scheduleWithFixedDelay(() -> {
try {
createReport();
} catch (Exception e) {
log.error("Error to create engagement report", e);
}
}, 1, 1, TimeUnit.DAYS);
和createreport功能 - 我检查日期。
谢谢!
最终,我使用了在构造函数中初始化的计划ExecutorService计划:
scheduler.schedule(createTask , nextDayOfTask, TimeUnit.DAYS);
所以,每次我到达createTask
时 - 我重新计算下一个报告应出来并更新时间表。
public Runnable createTask = new Runnable() {
@Override
public void run() {
// Do What Ever You Need
scheduler.schedule(this, nextDayOfTask, TimeUnit.DAYS);
}
};