2015-10-23 81 views
0

我們知道我們可以在特定的時間間隔之後運行調用方法。例如:如何使用動態可變時間運行Timer任務?

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

class MyClass extends TimerTask { 

    public void run() { 
     // logic 
    } 
} 

一切似乎確定!但是我怎樣才能每次指定隨機時間?換句話說,我不想每N毫秒調用一次方法,但是我需要每次都以隨機延遲間隔調用它。

例如延遲是在[MN]的範圍內,如果M = 5000和N = 20000然後:

  • 1號延遲:從範圍的隨機數[5000-20000]
  • 二路dalay :從範圍[5000-20000]

末等..

我發現來實現最簡單的方法(庫)的隨機數。它可以是另一個班級。我無法找到如果計時器有這個功能。

此致敬禮。

回答

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(); 
    } 
} 
+0

這會隨機的時間每次方法'run'被調用的時候,否則他將不得不重新實例化'timer'? – kbreezy04

+0

它每次都會創建一個新的TimerTask,但您可以重複使用相同的Timer。 – geokavel

+0

經過測試,效果很好。 – geokavel