Class WaitableClock

java.lang.Object
java.time.Clock
de.bsvrz.dua.pllogufd.clock.WaitableClock
All Implemented Interfaces:
InstantSource
Direct Known Subclasses:
SimulationClock, WaitableSystemClock

public abstract class WaitableClock extends Clock
Ein Clock-Objekt, das Methoden bietet, eine beliebige Zeit zu arten oder zu warten bis ein beliebiger Zeitpunkt eingetroffen ist. Diese Klasse kann verwendet werden um für Testfälle, Simulationen u.ä. den Zeitablauf zu beschleunigen oder zu verlangsamen, siehe SimulationClock
  • Constructor Details

    • WaitableClock

      public WaitableClock()
  • Method Details

    • sleep

      public abstract void sleep(long millis) throws InterruptedException
      Tut das gleiche wie Thread.sleep(long), verwendet aber diese Uhr um die Wartezeit zu bestimmen. Wenn diese Uhr beispielsweise um Faktor 10 beschleunigt läuft, dann verringert sich die reale Wartezeit um Faktor 10.
      Parameters:
      millis - Millisekunden, fall 0 oder negativ wird nicht gewartet.
      Throws:
      InterruptedException - Exception
    • sleep

      public final void sleep(Duration duration) throws InterruptedException
      Wartet die angegebene Dauer.
      Parameters:
      duration - Dauer, fall 0 oder negativ wird nicht gewartet.
      Throws:
      InterruptedException - Exception
    • sleepUntil

      public final void sleepUntil(Instant instant) throws InterruptedException
      Wartet, bis die Uhr die angegebene Zeit erreicht. Liegt die angegebene Zeit vor dem aktuellen zeitpunkt wird nicht gewartet.
      Parameters:
      instant - Ziel-Zeitpunkt
      Throws:
      InterruptedException - Exception
    • durationUntil

      public final Duration durationUntil(Instant until)
      Berechnet die Dauer bis zum angegebenen Zeitpunkt
      Parameters:
      until - Ziel-Zeitpunkt
      Returns:
      Dauer (kann negativ sein, falls der Ziel-Zeitpunkt in der Vergangenheit liegt)
    • wait

      public abstract Duration wait(Object obj, long millis) throws InterruptedException
      Tut das gleiche wie obj.Object.wait(long), verwendet aber diese Uhr um die Wartezeit zu bestimmen. Wenn diese Uhr beispielsweise um Faktor 10 beschleunigt läuft, dann verringert sich die reale Wartezeit um Faktor 10. Im Gegensatz zu sleep(Duration) kann das Warten mit Object.notifyAll() unterbrochen werden und es muss auf das Objekt synchronisiert werden.
      Parameters:
      obj - Objekt, für das Object.wait(long) aufgerufen werden soll
      millis - Millisekunden, fall 0 oder negativ wird nicht gewartet.
      Returns:
      Zeit die gewartet wurde, bis der Thread aufgeweckt wurde
      Throws:
      InterruptedException - Exception
    • wait

      public final Duration wait(Object obj, Duration duration) throws InterruptedException
      Wartet die angegebene Dauer, vergleichbar mit obj.Object.wait(long). Im Gegensatz zu sleep(Duration) kann das Warten mit Object.notifyAll() unterbrochen werden und es muss auf das Objekt synchronisiert werden.
      Parameters:
      obj - Objekt, für das Object.wait(long) aufgerufen werden soll
      duration - Dauer, fall 0 oder negativ wird nicht gewartet.
      Returns:
      Zeit die gewartet wurde, bis der Thread aufgeweckt wurde
      Throws:
      InterruptedException - Exception
    • waitUntil

      public final Duration waitUntil(Object obj, Instant until) throws InterruptedException
      Wartet biszum angegebenen Zeitpunkt, vergleichbar mit obj.Object.wait(long). Im Gegensatz zu sleep(Duration) kann das Warten mit Object.notifyAll() unterbrochen werden und es muss auf das Objekt synchronisiert werden.
      Parameters:
      obj - Objekt, für das Object.wait(long) aufgerufen werden soll
      until - Ziel-Zeitpunkt
      Returns:
      Zeit die gewartet wurde, bis der Thread aufgeweckt wurde
      Throws:
      InterruptedException - Exception
    • systemClock

      public static WaitableClock systemClock()
      Gibt die System-Uhr zurück. Diese entspricht der aktuellen Systemzeit und ist damit eine erweiterte Version von Clock.systemUTC().
      Returns:
      die System-Uhr
    • simulationClock

      public static WaitableClock simulationClock(Instant start, double simulationSpeed)
      Gibt eine simulierte Uhr zurück
      Parameters:
      start - Startzeit der Uhr (beim Aufruf dieser Methode)
      simulationSpeed - Geschwindigkeits-Faktor der Uhr. Gibt an, wie schnell die Uhr im Vergleich zur realen Systemzeit läuft. Bspw. Faktor 10: Die Uhr geht 10 Minuten innerhalb einer realen Minute.
      Returns:
      Simulationsuhr