Java Timer中scheduleAtFixedRate()函数的延迟和周期参数之间的区别

4
java.util.Timer.scheduleAtFixedRate(TimerTask timer, long delay, long period) 中,delayperiod 有什么区别?

你尝试过阅读JavaDoc吗? - talex
是的..我读了..但是没有清楚的想法..他们在计时器中扮演什么角色..从我的角度来看,计时器有两个组成部分-> 1.当阅读更改时和2.之后的安静时间..所以延迟指的是哪一个和指向哪些时期.. - SteffyK
2个回答

6

对于这些事情,总是参考(Java SDK)的 JavaDocs: https://docs.oracle.com/javase/8/docs/api/java/util/Timer.html#scheduleAtFixedRate-java.util.TimerTask-long-long-

delay - delay in milliseconds before task is to be executed.
period - time in milliseconds between successive task executions.

您的IDE也应该会自动显示它

所以,delay是从现在到第一次执行的时间,之后每隔period毫秒再次执行。

另一个好方法是:使用两个不同的值作为delayperiod,以及一个只在控制台打印一行的TimerTask。然后看看会发生什么。


0
我们可以通过将延迟值秒/分的形式传递到延迟参数中,安排任务在首选时间开始执行。
运行RunTaskEvery2Seconds程序后,6秒钟后任务将被执行。 延迟的主要目的是延迟任务以在首选时间执行
package com.java.thread.task;

import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class RunTaskEvery2Seconds {

public static void main(String[] args) {
    long timeIntervalForTaskOne = 2000;
    int delaySeconds = 6*1000;//6 seconds
    TimerTask taskOne = new TimerTask() {

        @Override
        public void run() {
//              log.info("Running Task One Time: {}", new Date());
                System.out.printf("Running Task One Time: %s", "call db", new Date() +"\n");
        }
    };

    Timer timer = new Timer();
    Calendar runningTime = Calendar.getInstance();
    System.out.printf("Running Task One -> Actual starting Time:%s", runningTime.getTime() +"\n");

    //updating delay time
    runningTime.setTimeInMillis(runningTime.getTimeInMillis() + delaySeconds);

    System.out.printf("Scheduled Running Task One will start at: %s", runningTime.getTime() +"\n");
    System.out.println("Waiting for Schedule of Running Task One");
    timer.scheduleAtFixedRate(taskOne, delaySeconds, timeIntervalForTaskOne);


}
}

控制台输出:

Running Task One -> Actual starting Time:Wed Mar 27 16:12:32 IST 2019
Scheduled Running Task One will start at: Wed Mar 27 16:12:38 IST 2019
Waiting for Schedule of Running Task One
Running Task One Time: Wed Mar 27 16:12:38 IST 2019
Running Task One Time: Wed Mar 27 16:12:40 IST 2019
Running Task One Time: Wed Mar 27 16:12:42 IST 2019

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接