gpt4 book ai didi

java - 延迟会干扰我的计时逻辑吗?

转载 作者:行者123 更新时间:2023-12-01 13:31:44 25 4
gpt4 key购买 nike

虽然我使用的是fixedRate方法而不是简单的时间表,但这是否能具体确保没有后台 Activity 或垃圾收集可以打乱我的计时?延迟是否足够长,足以使后续运行错过我给它的整个窗口? (上午 8:00 至上午 8:05)。我通过更改操作系统时间来测试执行情况,它可以工作,但这是第一次使用调度和计时逻辑。

    //1 day
static final long timeDelay = 864000000;

public static void main(String[] args) {
Timer timer = new Timer();
TimerTask startBegin = new TimerTask() {
@Override
public void run() {
Calendar cal = Calendar.getInstance();
int month = cal.get(Calendar.MONTH); // 0 to 11
int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
int hour = cal.get(Calendar.HOUR_OF_DAY);
int minute = cal.get(Calendar.MINUTE);
// March, June, Sept, Dec, First Tues at 8 a.m
if(((month == 2)||(month == 5)||(month == 8)||(month == 11)) && (dayOfMonth <7) && (hour == 8) && (minute >= 0 && minute <5)) {
begin();
}
}
};
timer.scheduleAtFixedRate(startBegin, 0, timeDelay);
}

最佳答案

ScheduledExecutorService 将尽最大努力在指定的时间运行您的程序 - 然而,它的这样做受到抢占式多线程的变幻莫测以及它所运行的操作系统和硬件的限制的限制.

有一些称为“实时操作系统”的东西旨在解决这个问题,但是对于大多数情况,标准 Java 行为将“足够好”。实际误差很小,scheduleAtFixedRate没有累积误差等。

关于java - 延迟会干扰我的计时逻辑吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21531858/

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