Me pareció interesante, así que vamos a ello:
Este es el Timer:
Código Java:
Ver originalimport java.util.Timer;
import java.util.TimerTask;
public class Timeout {
private int hour = 0;
private int minute = 0;
private int second = 11;
private boolean isTimerRunning;
private Display display;
public Timeout() {
display = new Display();
}
@Override
public void run() {
isTimerRunning = true;
if(second > 0) {
second--;
} else {
second = 59;
if(minute > 0) minute--;
else {
minute = 59;
if(hour > 0) hour--;
// si segundo = 0, minuto = 0 y hora = 0,
// cancelamos el timer
else {
isTimerRunning = false;
timer.cancel();
timer.purge();
}
}
}
if(isTimerRunning)
display.printTime(hour, minute, second);
}
}; // fin timertask
public void start(int timeout, int interval) {
timer.schedule(task, timeout, interval);
}
} // fin clase
Esta clase imprime la hora actual:
Código Java:
Ver originalpublic class Display {
public void printTime(int hour, int minute, int second) {
fullHour += (hour > 9) ? ":" + hour : "0" + hour;
fullHour += (minute > 9) ? ":" + minute : ":0" + minute;
fullHour += (second > 9) ? ":" + second : ":0" + second;
}
}
Y en el main solamente iniciamos el timer, pasándole el timeout (tiempo de espera en el que al acabar empezará el timer) y el intérvalo de tiempo en que se ejecutará el timer (en milisegundos).
Código Java:
Ver originalpublic class TimerTest {
public static void main
(String[] args
) { Timeout timeout = new Timeout();
timeout.start(0, 1000);
}
}
Demo: