Basic Timer
import java.util.*; /** * @author Matthew D. Hicks * */ public class BasicTimer { public static final int TYPE_CLOCK = 1; public static final int TYPE_ELAPSED = 2; public static final int TYPE_REMAINING = 3; private int type; private long start; private long max; public BasicTimer(int type) { this.type = type; start = System.currentTimeMillis(); } public long getTime() { if (type == TYPE_CLOCK) { return System.currentTimeMillis(); } else if (type == TYPE_ELAPSED) { return System.currentTimeMillis() - start; } else if (type == TYPE_REMAINING) { return max - (System.currentTimeMillis() - start); } throw new RuntimeException("Type does not match anything known: " + type); } public void setMax(long max) { this.max = max; } public static void main(String[] args) throws Exception { int type = TYPE_REMAINING; BasicTimer timer = new BasicTimer(type); timer.setMax(10000); GregorianCalendar calendar = new GregorianCalendar(); while (true) { Thread.sleep(1000); if (type == TYPE_CLOCK) { calendar.setTimeInMillis(timer.getTime()); System.out.println("Clock: " + calendar); } else if (type == TYPE_ELAPSED) { System.out.println("Elapsed: " + (timer.getTime() / 1000) + " seconds"); } else if (type == TYPE_REMAINING) { System.out.println("Remaining: " + (timer.getTime() / 1000) + " seconds"); } } } }