package com.github.dozedoff.commonj.time;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.TimeUnit;
public abstract class Ticker {
private Timer timer;
public Ticker(long time, TimeUnit timeUnit) {
createTimer("Timer", time, timeUnit);
}
public Ticker(String tickerName, long time, TimeUnit timeUnit) {
createTimer(tickerName, time, timeUnit);
}
abstract public void tickEvent();
private void createTimer(String name, long time, TimeUnit timeUnit) {
timer = new Timer(name);
timer.scheduleAtFixedRate(createTickTask(), 0, convertToMiliseconds(time, timeUnit));
}
private long convertToMiliseconds(long time, TimeUnit timeUnit) {
return TimeUnit.MILLISECONDS.convert(time, timeUnit);
}
private TimerTask createTickTask() {
return new TimerTask() {
@Override
public void run() {
tickEvent();
}
};
}
public void cancel() {
timer.cancel();
}
}