2011-01-02 18:34:43| 分类: 软件开发 | 标签:void timer import param dateutil |字号大中小 订阅
Spring为我们提供了很方便的定时任务处理,但是不用Spring呢?JDK也给提供了一个简单的定时任务处理,废话不多说,贴上源码
package com.yhj.timeTask;< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />
import java.util.TimerTask;
import com.yhj.common.date.DateUtil;
/**
* 要执行的定时任务
* com.yhj.timeTask.PrintTask.java
* @author 一线天色 天宇星辰 创建于 2011-1-2 下午04:24:01
*/
public class PrintTask extends TimerTask {
@Override
public void run() {
System.out.println(DateUtil.getCurrentChineseDate());
}
}
package com.yhj.timer;
import java.text.ParseException;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import com.yhj.common.date.DateUtil;
import com.yhj.timeTask.PrintTask;
/**
* 计时器
* com.yhj.timer.PrintTimer.java
* @author 一线天色 天宇星辰 创建于 2011-1-2 下午04:24:49
*/
public class PrintTimer {
/**
* 计时器
*/
private Timer timer =new Timer();
/**
* 每天执行一次
* @param task
* @param time 要求执行格式 hh:mn:ss
* @author 一线天色 天宇星辰 创建于 2011-1-2 下午04:28:11
* @throws InterruptedException
* @throws ParseException
*/
public void doEveryDay(TimerTask task,String time) throws InterruptedException, ParseException {
time=DateUtil.getCurrentDateStr().substring(0,11)+time;
long milliSeconds=DateUtil.compare(new Date(), DateUtil.praseDate(time), DateUtil.ONE_MILLI_SECOND);
Thread.sleep(Math.abs(milliSeconds));
timer.scheduleAtFixedRate(task,new Date(), DateUtil.ONE_DAY);
}
/**
* 在某个时间点执行一次
* @param task
* @param date
* @author 一线天色 天宇星辰 创建于 2011-1-2 下午04:29:29
*/
public void doOnce(TimerTask task,Date date) {
timer.schedule(task, date);
}
/**
* 每隔多长时间执行一次
* @param task
* @param milliSeconds
* @author 一线天色 天宇星辰 创建于 2011-1-2 下午04:53:54
*/
public void doWithRepeat(TimerTask task,long milliSeconds) {
timer.scheduleAtFixedRate(task,0, milliSeconds);
}
}
package com.yhj.clint;
import com.yhj.timeTask.PrintTask;
import com.yhj.timer.PrintTimer;
public class Clint {
/**
* @param args
* @author 一线天色 天宇星辰 创建于 2011-1-2 下午04:55:19
*/
public static void main(String[] args) {
new PrintTimer().doWithRepeat(new PrintTask(), 1000);
}
}
对于该调用哪个方法呢?参见JDK(如下)
方法摘要 |
|
void |
cancel() |
int |
purge() |
void |
schedule(TimerTask task, Date time) |
void |
schedule(TimerTask task, Date firstTime, long period) |
void |
schedule(TimerTask task, long delay) |
void |
schedule(TimerTask task, long delay, long period) |
void |
scheduleAtFixedRate(TimerTask task, Date firstTime, long period) |
void |
scheduleAtFixedRate(TimerTask task, long delay, long period) |
下面是我的程序的运行结果,如图所示,一个1秒执行一次的定时任务就搞定了,简单吧?(当然最好还是用框架里面提供的定时任务处理方法)