博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Timer和TimerTask的使用
阅读量:5256 次
发布时间:2019-06-14

本文共 1701 字,大约阅读时间需要 5 分钟。

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
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
(); } @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();	}

转载于:https://www.cnblogs.com/huangbei1990/p/5869489.html

你可能感兴趣的文章
计算几何:平面最近点对
查看>>
Linux中内存查看命令free详解(转)
查看>>
iOS 导出 ipa 包时 四个选项的意义
查看>>
七大排序的个人总结(三)
查看>>
工资计算器读写数据文件
查看>>
jquery圆角插件
查看>>
exception tomcat startup.bat 闪退
查看>>
ADN新开了云计算Cloud和移动计算Mobile相关技术的博客
查看>>
Civil 3D 2012 SP 2.1发布了
查看>>
ANT-build.xml文件详解
查看>>
tips:Java的Random类和Random函数
查看>>
数据迁移时 提示 No changes detected
查看>>
ubuntu下/boot空间被占满的解决方法
查看>>
[LeetCode]-DataBase-Rising Temperature
查看>>
搞定Windows连Linux三大件:SecureCRT,FileZilla,NX
查看>>
结对-结对编项目作业名称-开发过程
查看>>
编译时,运行时
查看>>
LeetCode-Binary Tree Zigzag Level Order Traversal
查看>>
python的help()、dir()演示
查看>>
判断点在线段上
查看>>