【问题标题】:Changing timer interval dynamically in Java 1.4在 Java 1.4 中动态更改计时器间隔
【发布时间】:2016-10-03 11:53:12
【问题描述】:

我有一个定时器任务如下图:

long timerSec = 5000;

TimerTask task1 = new TimerTask()
{   
    public void run()
    {
        //Some code...
        System.out.println("Timer task...");
    }
};

还有一个定时器对象如下图:

Timer readFileTimer = new Timer();

我在两个连续的任务执行之间安排了一个间隔 5 秒的任务。

readFileTimer.scheduleAtFixedRate(task1, 0, timerSec);

下面的代码行分配了新的时间段。我想将时间段从 5 秒更改为 n 秒(让我们说 10 秒 w.r.t. timerSec 值)。

timerSec = CalculateTimeForUpgrade(); //Get new timer interval period.

我尝试了下面的代码,但没有得到预期的结果。

readFileTimer.scheduleAtFixedRate(task1, 0, timerSec);

请帮忙。提前致谢。

【问题讨论】:

    标签: timer timertask java1.4


    【解决方案1】:

    不要从一开始就以固定的时间间隔开始任务,而是在每次完成任务时重新安排任务。 像这样的:

        final Timer readFileTimer = new Timer();
        readFileTimer.schedule(new MyTimerTask(), 0);
    
        .......
    
        private class MyTimerTask extends TimerTask() {
            @Override
            public void run() {
                // Some code...
                System.out.println("Timer task...");
                if (readFileTimer!=null)
                    readFileTimer.schedule(new MyTimerTask(), CalculateTimeForUpgrade());
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-09
      • 1970-01-01
      • 2012-10-17
      • 2016-05-28
      • 1970-01-01
      • 2012-03-01
      相关资源
      最近更新 更多