如何使用动态可变时间运行Timer Task?

时间:2015-10-23 16:27:56

标签: java

我们知道我们可以在一段特定的时间间隔后运行调用方法。例如:

Timer timer = new Timer();
timer.schedule(new MyClass(), 0, 5000);

class MyClass extends TimerTask {

    public void run() {
        // logic
    }
}

一切似乎都好!但是我怎样才能每次指定随机时间?换句话说,我不想每N毫秒调用一次方法,但我需要每次都以随机延迟间隔调用它。

例如,延迟在[M-N]范围内,如果M = 5000且N = 20000则:

  • 第1次延迟:范围[5000-20000]
  • 中的随机数
  • 第2次dalay:范围[5000-20000]
  • 中的随机数

结束等...

我找到了最简单的方法(库)来实现。它可以是另一个类。我无法找到Timer是否具有此功能。

最好的问候。

1 个答案:

答案 0 :(得分:2)

您需要做的就是

public void schedule() {
    timer.schedule(new MyClass(),Math.round(Math.random()*15000)+5000);
}
class MyClass extends TimerTask {
    public void run() {

    //your code

    //schedule next task;
     schedule();
    }
}