我想在类中执行一个方法,比如每天只执行一次。如果一天内已经执行,则返回或执行该方法。
我想知道如果我退出代码会发生什么,它会在后台运行吗?
最佳答案
假设您已经知道如何安排任务到 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 小时为间隔安排的任务相互阻塞...
关于java - java中不使用定时器,仅在时间到时才执行方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46168086/