最近,被女人烦得不行!一会儿喊我商量投资,一会儿喊我商量买房的,真不知道要干嘛,鼻子被她牵得不轻!看看这房价,罢了罢了,等跌,呵呵呵!
这家伙跑到上海工作了,没想还这么的麻烦,工作忙了一周了,现在也有个闲工夫来学习了,学习以前看过但没有用过,没有总结过,又忘记了的东东!
今天就从最基本的 JDK Timer 调度开始吧,姑且认为是一计时器吧。学一点,记一点嘛,这也是一种积累学习的方法。钱,是个好东西,但是呢,现在才二十四五岁的把工资看得太重有些过分,现在哪怕一个月存个两三千,以后要是咱Java底子更硬了,一个月的工资就顶得上几个月的了,所以,现在存个毛钱呀,学好、吃好、玩好就OK了!
说起这个调度呢,那我们在做项目、日常生活中的应用就有些广了,今天说的呢,是我们JDK里自带的一种很简单的实现:java.util.Timer和java.util.TimerTask,望文生义:
1、
TimerTask:就是一任务,建立的要执行的任务;
TimerTask是一抽象类,所以,要建立多复杂的任务,就看你的了,实现
run()抽象方法,定义你的任务,他呢,还有另外的两个方法,cancel():取消此计时器任务、scheduledExecutionTime():返回此任务这次实际执行的安排执行时间。
2、
Timer:这个呢,就有点像个总指挥了,而且还是个很有威信的指挥,线程安全,存在多个没有问题,照收。专职指挥
TimerTask里定义的任务叫他去做。到底是怎么指挥
TimerTask呢,这里呢,他就有多个任务安排的schedule()方法了,他有多个重载的版本,反正宗旨就是一个,叫
TimerTask干活,就是个怎么干的问题了。也就是针对某一个
TimerTask,并设置规则让
TimerTask去完成任务。
大体上呢,我个人理解就这么样的个意思,OK再来看看这两个的具体实现吧:
1、先定义个也许重新执行的任务吧:
package com.cui.hourse.jdkTimerDemo;
import java.util.Date;
import java.util.TimerTask;
public class SimpleTimerTask extends TimerTask {
private int count = 1;//计数
@Override
public void run() {
System.out.println("execute task now");
Date exeTime = new Date(scheduledExecutionTime());
System.out.println("本次任务安排执行的时间为: "+exeTime);
if(++count>5){
System.out.println("cancle...");
cancel();//取消任务
}
}
}
2、总指挥怎么安排工作任务:
package com.cui.hourse.jdkTimerDemo;
import java.util.Timer;
import java.util.TimerTask;
public class TimerRunner {
public static void main(String[]args){
Timer timer = new Timer();//指挥登场了
TimerTask task = new SimpleTimerTask();//司职任务
/**
* 总管让这个task,过两秒后,每隔5秒执行一次,直到五次!
* */
timer.schedule(task, 2000L, 5000L);
}
}
3、运行看结果:
Showtime now: Fri Apr 23 23:05:01 CST 2010
execute task now
本次任务安排执行的时间为: Fri Apr 23 23:05:03 CST 2010
execute task now
本次任务安排执行的时间为: Fri Apr 23 23:05:08 CST 2010
execute task now
本次任务安排执行的时间为: Fri Apr 23 23:05:13 CST 2010
execute task now
本次任务安排执行的时间为: Fri Apr 23 23:05:18 CST 2010
execute task now
本次任务安排执行的时间为: Fri Apr 23 23:05:23 CST 2010
cancle...
OK,搞定!