Java Warteschlange?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

In meinem Beispiel nenne ich deine Methode yourFunc.

So ginge es:

Deine Klasse braucht folgende Attribute:

int waitingForExecution = 0;
long lastExecuted = 0;
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();

Und dann fügst du einfach noch folgende Funktion ein:

public void callYourFunc() {
    if (waitingForExecution <= 0 && lastExecuted < System.currentTimeMillis() - 3000) {
        yourFunc();
        lastExecuted = System.currentTimeMillis();
    } else {
        executor.schedule(()->{
            waitingForExecution--;
            yourFunc();
        }, lastExecuted+3000-System.currentTimeMillis() + waitingForExecution++*3000, TimeUnit.MILLISECONDS);
    }
}

Fertig.

Anstatt deine Funktion direkt aufzurufen kannst du jetzt einfach immer callYourFunc() aufrufen. Das kümmert sich dann um die verzögerte Ausführung.

Woher ich das weiß:eigene Erfahrung – Minecraft-Experte. Aktiver Spieler seit 2011.