簡體   English   中英

以5秒,4秒,3秒等間隔調用功能

[英]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中的TimerTimerTask類。 您可以安排一個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM