[英]Call function at interval of 5 seconds then 4 seconds then 3 etc
我有一個函數foo()
。
我想每5秒調用一次foo()
,然后在foo()
“ X”調用之后每4秒調用一次。 之后每3秒對foo()
進行另一個“ X”調用,直到每秒調用foo()
。
我還需要能夠隨時停止調用foo。
我瀏覽了其他Stack Overflow帖子,但沒有發現任何可以動態更改調用間隔的內容。
我能做什么?
看一下Java中的Timer
和TimerTask
類。 您可以安排一個TimerTask並使任務決定下一次的安排時間。 任務自行安排。
這樣,您可以動態決定下一個執行間隔。
import java.util.Timer;
import java.util.TimerTask;
public class Main {
public interface FooService {
public void foo();
}
public static class DelayCalculator {
public long nextTime() { // ... };
}
public static class FooTask extends TimerTask {
FooService fooSvc;
public FooTask(FooService foos) {
fooSvc = foos;
}
@Override
public void run() {
fooSvc.foo();
TIMER.schedule(new FooTask(fooSvc), DELAYCALC.nextTime());
}
}
private static final Timer TIMER = new Timer();
private static final DelayCalculator DELAYCALC = new DelayCalculator();
public static void main(String[] args) {
FooTask fooT = new FooTask(() -> System.out.println("Foo"));
TIMER.schedule(fooT, 0);
}
}
每5秒鍾設置一個計時器(通過處理程序警報)。 跟蹤其被調用的次數。 當該數字大於X時,將計時器更改為每4秒一次。 當其大於2 * X時,將其更改為3。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.