de.bsvrz.kex.kexdav.util
Class AdjustableTimer

java.lang.Object
  extended by de.bsvrz.kex.kexdav.util.AdjustableTimer

public class AdjustableTimer
extends Object

Timer mit einmaliger Ausführung und anpassbarem Delay. Beispiel: Der Timer wird mit 60 Sekunden Delay gestartet, dann triggert er nach 60 Sekunden. Wird nach 5 Sekunden aber ein neuer Delay von 20 Sekunden gesetzt, dann wird der Timer nach weiteren 15 Sekunden triggern (also die angegebenen 20 Sekunden seit dem Zeitpunkt, wo er gestartet wurde). Würde stattdessen nach 20 Sekunden ein Delay von 5 Sekunden gesetzt, wird der Timer sofort getriggert, da die 5 Sekunden seit Aktivierung des Timers bereits vergangen sind.

Der Timer macht keine Vorgaben darüber, in welchem Thread der Task ausgeführt wird. Insbesondere kann bei einem resultierenden Zeitraum<=0 der Task sofort in dem Thread ausgeführt werden, in dem der Konstruktor oder die adjustDelay(long)-Methode ausgeführt wird.

Author:
Kappich Systemberatung

Field Summary
private  boolean _finished
           
private  long _startTime
           
private  Runnable _task
           
private  Timer _timer
           
 
Constructor Summary
AdjustableTimer(long delay, Runnable task)
          Erstellt einen neuen Timer
 
Method Summary
 void adjustDelay(long newDelay)
          Ändert die Dauer bis zur Ausführung des Tasks
 void cancel()
          Stoppt den Timer und verhindert, dass der Task in Zukunft durch diesen Timer ausgeführt wird
private  void runTask()
          Führt den angegebenen Task aus
private  void setTrigger(long delay)
          Erstellt intern einen neuen Timer
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

_startTime

private final long _startTime

_task

private final Runnable _task

_timer

private Timer _timer

_finished

private boolean _finished
Constructor Detail

AdjustableTimer

public AdjustableTimer(long delay,
                       Runnable task)
Erstellt einen neuen Timer

Parameters:
delay - Dauer in Millisekunden, bis der Task gestartet wird (ab dem Zeitpunkt, wo dieser Konstruktor aufgerufen wird)
task - Aufgabe, die ausgeführt werden soll
Method Detail

adjustDelay

public void adjustDelay(long newDelay)
Ändert die Dauer bis zur Ausführung des Tasks

Parameters:
newDelay - neue Dauer in ms. Die Dauer wird immer ab dem Initialisierungszeitpunkt des Timers angegeben, ist newDelay bspw. 12 und der Timer läuft schon 5 Sekunden, werden weitere 7 Sekunden gewartet. Falls diese Wartezeit negativ ist, wird der Task sofort gestartet

cancel

public void cancel()
Stoppt den Timer und verhindert, dass der Task in Zukunft durch diesen Timer ausgeführt wird


setTrigger

private void setTrigger(long delay)
Erstellt intern einen neuen Timer

Parameters:
delay - Wartezeit

runTask

private void runTask()
Führt den angegebenen Task aus


toString

public String toString()
Overrides:
toString in class Object