首页 > 代码库 > Timer和TimerTask的使用
Timer和TimerTask的使用
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(); }
Timer和TimerTask的使用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。