您的位置:首页 > 编程语言 > Java开发

Java定时任务

2016-08-25 16:00 267 查看
定时任务的执行需要两个基类,分别是java.util.Timer和java.util.TimerTask

定时任务的创建执行过程:

1.创建一个要执行的TimerTask;

2.创建一个Timer的实例,通过Timer提供的schedule方法,将TimerTask加入到定时器Timer中;

Timer中的schedule()方法是有多种重载格式的,以适应不同的情况。该方法的格式如下:
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)
安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。

Timer是线程安全的,此类可扩展到大量同时安排的任务(存在数千个都没有问题)。其所有构造方法都启动计时器线程。可以调用cancel() 终止此计时器,丢弃所有当前已安排的任务。purge()从此计时器的任务队列中移除所有已取消的任务。此类不提供实时保证:它使用 Object.wait(long) 方法来安排任务。

TimerTask是一个抽象类,由 Timer 安排为一次执行或重复执行的任务。它有一个抽象方法run()----计时器任务要执行的操作。因此,每个具体的任务类都必须继承TimerTask类,并且重写run()方法。另外它还有两个非抽象的方法:
boolean cancel()
取消此计时器任务。
long scheduledExecutionTime()
返回此任务最近实际 执行的安排 执行时间。

public class TestTimerTask extends TimerTask{
/**
* 定时任务要执行的操作
*/
@Override
public void run() {
Date date = new Date(this.scheduledExecutionTime());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
System.out.println("本次任务执行的时间是:"+sdf.format(date));
}

}
public class TestTimer {

public static void main(String[] args) {
Timer timer = new Timer();
TestTimerTask task = new TestTimerTask();
/*//安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。1000L=1s
timer.schedule(task, 500L, 1000L);*/

/*//安排在指定时间执行指定任务
Calendar calendar = Calendar.getInstance();
calendar.set(2016, 7, 25, 15, 34);
timer.schedule(task,calendar.getTime());*/

/*//安排指定的任务在指定的时间开始后重复执行
Calendar calendar = Calendar.getInstance();
calendar.set(2016, 7, 25, 15, 41);
timer.schedule(task,calendar.getTime(),700L);*/

/*//安排在指定延时后执行这个任务
timer.schedule(task, 500L);*/

//每天0点执行定时任务
Calendar calendar = Calendar.getInstance();
calendar.set(2016, 7, 25, 15, 41); //设置开始执行的时间
//间隔时间一天
long  period =  24 * 60 * 60 * 1000;
timer.schedule(task, calendar.getTime(), period);
}

}

另外一种方法,摘超有机会试一下:

第一步:

第二步:

第三步:

第四步:配置web.xml文件

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: