package gr.ntua.ivml.athena.concurrent; import java.util.Timer; import java.util.TimerTask; /** * Simple class to enable regular reports. * Use like this: * t = new Ticker( 60 ) //every 60 seconds the Ticker becomes set. * if( t.isSet() ) { t.reset(), report } t.cancel() * * * @author Arne Stabenau * */ public class Ticker extends TimerTask { private static final Timer t = new Timer(); private boolean flag; private int seconds; private boolean restartOnReset; public Ticker( int seconds ) { flag = false; restartOnReset = false; this.seconds = seconds; t.schedule( this, seconds*1000l, seconds*1000l); } /** * If restart on Reset is true, the ticker only starts counting from * the last reset. * @param seconds * @param restartOnReset */ public Ticker( int seconds, boolean restartOnReset ) { this.restartOnReset = restartOnReset; this.seconds = seconds; this.flag = true; } public void run() { flag = true; } public void reset() { flag = false; if( restartOnReset ) { t.schedule(this, seconds*1000l); } } public boolean isSet() { return flag; } }