public class StatTimer {
private Timer timer;
public StatTimer() {
timer = new Timer();
timer.schedule(new TimerTask() {
// 执行的方法
public void run() {
System.out.println(new Date().toString());
}
}, 0, 1000);
}
public void destroy() {
timer.cancel();
}
public static void main(String[] args) {
StatTimer st = new StatTimer();
new Thread() {
public void run(StatTimer st) {
try {
sleep(3000);
st.destroy();
System.out.println("结束计时!");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.run(st);
}
}
用Thread类实现(据说用Timer类不好)
public class StatTimer {
private static Log log = new Log(StatTimer.class);
public static long request = 0;
private static Thread thread;
private static boolean runFlag = true;
public static void start() {
thread = new Thread() {
public void run() {
try {
long time = new Date().getTime();
long interval = 1000;
if (time % interval != 0) {
sleep(interval - time % interval);
time += interval - time % interval;
}
while (runFlag) {
sleep(interval);
time += interval;
System.out.println(new Date(time).getTime() + "/"
+ new Date().getTime());
}
} catch (InterruptedException e) {
e.printStackTrace();
// log.exception(e);
}
}
};
thread.start();
}
public static void destroy() {
runFlag = false;
if (!thread.isInterrupted())
thread.interrupt();
}
public static void main(String[] args) {
StatTimer.start();
new Thread() {
public void run() {
try {
sleep(3000);
StatTimer.destroy();
System.out.println("结束计时!");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();
}
}