有的时候我们需要每隔一段时间去执行某个任务,在Java中提供了Timer and TimerTask来完成这个任务
Timer(定时器)和TimerTask
Timer和TimerTask的方法很少,使用起来也非常方便。希望如果遇到问题参考一下API doc,里面写的很清楚。TimerTask是个抽象类,他扩展了Object并实现了Runnable接口,因此你必须在自己的Task中实现public void run()方法。这也就是我们需要执行的具体任务。Timer实际上是用来控制Task的,他提供的主要方法是重载的schedule()方法。
如何使用Timer(定时器)和TimerTask?
1) 可以安排自动的计划任务的类,每个任务都是一个线程
2) 创建Timer 实例
3) 为Timer 实例增加计划任务,计划任务是一个接口
4)使用cancel() 清除 timer对象上所有任务计划
例: 1 倒计时,每隔一秒显示一下时间
2 计时结束清楚计时任务
1 import java.util.Calendar; 2 import java.util.Date; 3 import java.util.GregorianCalendar; 4 import java.util.Timer; 5 import java.util.TimerTask; 6 7 public class TimerDemo { 8 public static void main(String[] args) { 9 //创建一个定时器 10 final Timer timer = new Timer(); 11 //倒计时 12 //从0毫秒开始,每隔1秒钟显示剩余时间,10秒以后结束计时 13 final long end = System.currentTimeMillis() + 1000*10;//end代表计时结束的时刻,10秒以后的时刻 14 15 timer.schedule(new TimerTask(){ 16 public void run() { 17 //show 表示剩余时间 18 long show = end-System.currentTimeMillis(); 19 long h = show/1000/60/60;//取小时 20 long m = show/1000/60%60;//取不够一个小时的分钟 21 long s = show/1000%60;//取不够一分钟的秒 22 System.out.println(h+":"+m+":"+s); 23 } 24 }, 0, 1000); 25 //到时间后停止 26 timer.schedule(new TimerTask(){ 27 public void run() { 28 timer.cancel(); 29 } 30 }, new Date(end)); 31 32 //闹钟 33 /*//计算出明天早上7:00:00作为开始时间start 34 Calendar cal = new GregorianCalendar(); 35 cal.add(Calendar.DAY_OF_YEAR, 1); 36 cal.set(Calendar.HOUR_OF_DAY,7); 37 cal.set(Calendar.MINUTE,0); 38 cal.set(Calendar.SECOND,0); 39 Date start = cal.getTime(); 40 41 //计划明天早晨7点开始,间隔24小时,执行计划 42 timer.schedule(new TimerTask(){ 43 public void run() { 44 System.out.println("该起床了!"); 45 } 46 }, start,1000L*60*60*24);*/ 47 } 48 }