gpt4 book ai didi

java.util.Timer 行为异常

转载 作者:行者123 更新时间:2023-11-30 05:05:15 29 4
gpt4 key购买 nike

我使用 java.util.Timer.scheduleAtFixedRate() 安排了一个 TimerTask 在固定时间运行,间隔为一天。 TimerTask 有一个逻辑来控制执行时间,例如 6 小时。计时器应该在第二天相同的给定时间开始此任务。但有时任务在持续时间结束后立即重新启动。我没有看到这种情况发生的任何模式,它只是随机发生的。我已经通过多次运行该应用程序对此进行了测试,但无法识别任何特定模式。

是这样的。

class App{
public static void main(final String[] args) {
Timer timer = new Timer();
ProcessManagerTask processManager = new ProcessManagerTask()
timer.scheduleAtFixedRate(processManager, today @ 01 AM, 1440 minutes))
//some logic to keep this running forever
}
}

public class ProcessManagerTask extends TimerTask {
public ProcessManagerTask(){
//end time = today @ 7 AM
}
public void run() {
while(end time is not expired){
//do some stuff
}
}

ProcessManagerTask 有时会在 7 点立即重新启动(当任务结束时)。

编辑:大家知道为什么计时器会出现问题。我还是没能弄清楚。

编辑 [2011 年 4 月 8 日]:伙计们,定时器的问题仍然没有解决。如果有人可以提供帮助,我将不胜感激。

最佳答案

来自文档:

If an execution is delayed for any reason (such as garbage collection or other background activity), two or more executions will occur in rapid succession to "catch up."

因此,您的任务似乎没有在凌晨 1 点整执行,因此执行了两次。

关于java.util.Timer 行为异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5326467/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com