Rückstellbare Zeitüberschreitung in Java

(ähnlich zu"Zurücksetzbarer Java-Timer" aber es gibt einige Feinheiten, die ich erforschen muss)

Ich benötige eine zurücksetzbare Timeout-Funktion, damit eine Methode aufgerufen wird, wenn meine Klasse innerhalb eines Zeitintervalls von T0 (wobei T0 in der Nähe von 50-1000 ms liegt) keine bestimmte Aktion ausführt:

class MyClass {
    static final private timeoutTime = 50;
    final private SomeTimer timer = new SomeTimer(timeoutTime, 
        new Runnable () { public void run() {
            onTimeout();
        }});

    private void onTimeout() { /* do something on timeout */ }

    public void criticalMethod() { this.timer.reset(); }
}

Womit kann ich das umsetzen? Ich kenne mich aus mitScheduledExecutorServiceund die Idee, anzurufenScheduledFuture.cancel () und dann die Aufgabe neu planenscheint wie es funktionieren sollte, aber dann besteht ein potentielles Risiko, wenn cancel () fehlschlägt und die geplante Aufgabe ausgeführt wird, wenn dies nicht der Fall sein sollte. Ich habe das Gefühl, dass mir hier eine Feinheit fehlt.

Gibt es auch (vielleicht noch wichtiger) eine Möglichkeit, meine Implementierung zu testen / zu beweisen, dass sie ordnungsgemäß funktioniert?

bearbeiten: Ich bin besonders besorgt über den Fall, in demcriticalMethod() wird häufig aufgerufen (möglicherweise mehrmals pro Millisekunde) ... Wenn ich ScheduledExecutorService verwende, scheint es nur ein potenzielles Ressourcenproblem zu sein, weiterhin neue geplante Aufgaben zu erstellen und alte abzubrechen, anstatt eine Aufgabe direkt neu zu planen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage