赞
踩
原文链接:https://blog.csdn.net/u012849206/article/details/50487644
Timer是线程调度工具。作用:定时,延时,周期性执行任务。
Timer是一个类,使用Timer创建一个对象,然后调用这个对象的schedule方法。TimerTask是一个抽象类,包含一个抽象方法run(),在run()函数中执行任务。
schedule有三个参数(第三个参数可以不填):1.TimerTask对象;2.多长时间后开始执行(long类型),或者从某个时间后开始执行(Date类型);3.执行周期,long类型。
如果定时器不销毁,会一直执行,因此用完要及时关闭。
- import java.util.Timer;
- import java.util.TimerTask;
-
- private Timer timer = null;//计时器
- private TimerTask task = null;
-
- //启动
- private void startTime() {
- timer = new Timer();
- task = new TimerTask() {
- @Override
- public void run() {
- try {
- //此处自己设置
- Message message = new Message();
- messege.what=1;
- handler.sendMessage(message);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- };
- //1000ms执行一次
- timer.schedule(task, 1000);
- }
-
- //关闭
- private void stopTime() {
- if(timer!=null)
- timer.cancel();
- timer=null;//据说这样不会自动跳出软件
- }
Timer就是一个线程,使用schedule方法完成对TimerTask的调度,多个TimerTask可以共用一个Timer,也就是说Timer对象调用一次schedule方法就是创建了一个线程,并且调用一次schedule 后TimerTask是无限制的循环下去的,使用Timer的cancel()停止操作。当然同一个Timer执行一次cancel()方法后,所有Timer线程都被终止。
//time为Date类型:在指定时间执行一次。
timer.schedule(task, time);
//firstTime为Date类型,period为long,表示从firstTime时刻开始,每隔period毫秒执行一次。
timer.schedule(task, firstTime, period);
//delay 为long类型:从现在起过delay毫秒执行一次。
timer.schedule(task, delay);
//delay为long,period为long:从现在起过delay毫秒以后,每隔period毫秒执行一次。
timer.schedule(task, delay, period);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。