标签:
Timer可以定时执行TimerTask任务,使用起来也十分的方便。
以下的代码是输出当前时间的TimerTask
//输出当前时间的任务
private static TimerTask task=new TimerTask(){
@Override
public void run() {
System.out.println(getCurrentTime());
}
};以下代码是使用Timer执行TimerTask
//Timer定时执行TimerTask任务 Timer timer=new Timer(); timer.schedule(task, date, period);
使用TimerTask执行的时候没有暂停和恢复,结束之后就没办法再次执行了。
以下代码使用栈保存当前的任务实现暂停和恢复的功能。
命令接口
public interface MyTimerI {
public void start();
public void stop();
public void pause();
public void resume();
}实现命令接口
public class MyTimerImpl implements MyTimerI{
private MyTimerTask task;
private int date;
private long period;
private Stack<MyTimerTask> taskStack;
private Timer timer;
public MyTimerImpl(TimerTask timerTask,int date,int period){
task=new MyTimerTask(timerTask);
this.date=date;
this.period=period;
timer=new Timer();
taskStack=new Stack<MyTimerTask>();
}
@Override
public void start() {
timer.schedule(task, date, period);
}
@Override
public void stop() {
timer.cancel();
}
@Override
public void pause() {
//使用栈保存当前的任务
taskStack.push(new MyTimerTask(task.getCurrentTask()));
task.cancel();
}
@Override
public void resume() {
//出栈,恢复保存的任务
task=taskStack.pop();
timer.schedule(task, 0, period);
}
private class MyTimerTask extends TimerTask{
private TimerTask task;
public MyTimerTask(TimerTask task){
this.task=task;
}
@Override
public void run() {
task.run();
}
public TimerTask getCurrentTask(){
return task;
}
}
}
使用方法
public static void main(String args[]){
//每隔1秒钟执行一次,不等待
MyTimerI timer = new MyTimerImpl(task,0,1000);
timer.start();
timer.pause();
timer.resume();
timer.stop();
}标签:
原文地址:http://www.cnblogs.com/huangbei1990/p/5869489.html