1.Timer:一种工具,线程用其安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。
- new Timer().schedule(task, 1000);
复制代码 上述代码就是新建一个Timer对象并为其安排一个task任务(TimerTask对象),delay为延迟执行的毫秒数,也可以指定一个固定时间,也可在其后指定重复次数。
2.TimerTask:抽象类,由 Timer 安排为一次执行或重复执行的任务。该类声明了Runable接口,要执行的任务代码应该放入run()方法中。
3.多个定时器嵌套问题:一个TimerTask执行结束后,过段时间又执行一个TimerTask,这样不断循环下去
- class MyTimerTask extends TimerTask {
- @Override
- public void run() {
- System.out.println("hello");
- new Timer().schedule(new MyTimerTask(), 2000);
- }
- }
复制代码 自定义一个TimerTask类,在run()方法中在new一个Timer,并且再new一个自身实例作为TimerTask。然后在程序外部调用。
- 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秒。
|
|