如何在运行时更改计时器任务的执行周期?我

2022-09-04 21:43:24

如何在运行时更改计时器的时间段?

    Timer timer = new Timer();

    timer.scheduleAtFixedRate(new TimerTask() {
        public void run() {

             // read new period
             period = getPeriod();

             doSomething();

        }
    }, 0, period);

答案 1

您不能直接执行此操作,但可以取消 上的任务,并使用所需的时间段重新安排它们。Timer

没有方法。getPeriod


答案 2

你可以这样做:

private int period= 1000; // ms

private void startTimer() {
    Timer timer = new Timer();
    timer.schedule(new TimerTask() {
        public void run() {
            // do something...
            System.out.println("period = " + period);
            period = 500;   // change the period time
            timer.cancel(); // cancel time
            startTimer();   // start the time again with a new period time
        }
    }, 0, period);
}