A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© darkads 中级黑马   /  2014-9-15 18:59  /  1008 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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秒。


1 个回复

倒序浏览
学习一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马