2017-09-12 33 views

回答

1

假设你已经知道如何安排任务run daily 的伎俩变得知道如果任务已在这一天没有被安排被提示运行。

对于所需的行为,您需要将最近运行的时间戳记(作为Java环境中的变量或作为磁盘上的文件)保存,在更新它之前检查它并执行功能。

一些伪代码:

Static bool timeManager(){ 
    CurrentTime = getCurrentTime() 
    TimeStamp = getTimeStamp() 
    if(CurrentTime - TimeStamp > 1day-afewMinutes){ 
     UpdateTimeStamp(CurrentTime) 
     return true 
    }else{ 
     return false 
    } 
} 
void jobWrapper(){ 
    if timeManager(){ 
     doTheJob() 
    }else{ 
     log("Skipping job at "+currentTime+" because job ran "+lastTime) 
    } 
} 

编辑:回滚指出,竞争状态,所以我把时间管理器的静态方法。另外我意识到第二个四舍五入可能影响你,所以我想我会从整天中减去几分钟,以避免由于四舍五入造成的阻塞对方的24小时间隔的任务...

+1

请记住,如果他使用多线程,你的伪代码是一个竞争条件 –

相关问题