3 回答
TA贡献1875条经验 获得超5个赞
按照意图,如果第一次执行花费的时间超过 20 秒,则第二次执行将在之后立即开始。如果第一次执行超过 40 秒,第三次执行将在第二次执行后立即开始。依此类推,直到您在 N 秒后赶上大约 N/20 次执行。
在固定速率执行中,每次执行都是相对于初始执行的调度执行时间进行调度的。如果执行因任何原因(例如垃圾回收或其他后台活动)而延迟,则将快速连续执行两次或更多次以“赶上进度”。从长远来看,执行频率将恰好是指定周期的倒数(假设 Object.wait(long) 底层的系统时钟是准确的)。
如果您两次插入相同的数据,那么问题似乎在于您决定是否已经插入该数据,而不是执行之间的间隔。
如果任务运行了大约一分钟,这是否表明存在错误,或者需要多长时间(例如连接到远程数据库)?
TA贡献1850条经验 获得超11个赞
这很好用
class A {
static Timer timer;
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
System.out.println("Task is running");
}
};
public void test() {
timer = new Timer();
timer.scheduleAtFixedRate(timerTask, 0, 5 * 1000);
}
public static void main(String[] args) {
A a = new A();
a.test();
}
}
添加回答
举报