黑马程序员技术交流社区

标题: Timer使用总结 [打印本页]

作者: darkads    时间: 2014-9-15 18:59
标题: Timer使用总结
1.Timer一种工具,线程用其安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。
  1. new Timer().schedule(task, 1000);
复制代码
上述代码就是新建一个Timer对象并为其安排一个task任务(TimerTask对象),delay为延迟执行的毫秒数,也可以指定一个固定时间,也可在其后指定重复次数。

2.TimerTask:抽象类,由 Timer 安排为一次执行或重复执行的任务。该类声明了Runable接口,要执行的任务代码应该放入run()方法中。

3.多个定时器嵌套问题:一个TimerTask执行结束后,过段时间又执行一个TimerTask,这样不断循环下去
  1. class MyTimerTask extends TimerTask {
  2.         @Override
  3.         public void run() {
  4.                 System.out.println("hello");
  5.                 new Timer().schedule(new MyTimerTask(), 2000);
  6.         }
  7. }
复制代码
自定义一个TimerTask类,在run()方法中在new一个Timer,并且再new一个自身实例作为TimerTask。然后在程序外部调用。
  1. new Timer().schedule(new MyTimerTask(), 2000);
复制代码
这样就会以2秒的间隔一直执行,实现的关键是在TimerTask的run()方法中继续创建定时器。如果两个定时器执行间隔不一样,例如2秒后执行定时器A,然后3秒后执行定时器B,2秒后A,3秒后B一直这样下去,两种方法实现:
        1) 在MyTimerTask创建一个静态int型变量,如果每执行一次加1,奇数时设定新的Timer实例的延迟执行时间为3秒,偶数为两秒。
        2) 创建两个TimerTask子类CA和CB,CA在run()方法中new的Timer实例执行CB对象,延迟3秒,CB在run()方法中new的Timer实例执行CA对象,延迟2秒。



作者: iefegend    时间: 2014-9-15 19:38
学习一下




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2