定时任务就是在指定时间执行程序,或周期性执行计划任务。Java中实现定时任务的方法有很多,本文从从JDK自带的一些方法来实现定时任务的需求。

一、Timer和TimerTask

   Timer和TimerTask可以作为线程实现的第三种方式(前两种详见《Java多线程基础》),JDK1.5之后定时任务推荐使用ScheduledThreadPoolExecutor

1、快速入门

   Timer运行在后台,可以执行任务一次,或定期执行任务。TimerTask类继承了Runnable接口,因此具备多线程的能力。一个Timer可以调度任意多个TimerTask,所有任务都存储在一个队列中顺序执行,如果需要多个TimerTask并发执行,则需要创建两个多个Timer。

  一个简单使用Timer的例子如下:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class TimerTest {  
    //被执行的任务必须继承TimerTask,并且实现run方法
    static class MyTimerTask1 extends TimerTask {  
        public void run() {  
            System.out.println("爆炸!!!");  
        }  
    }     
    public static void main(String[] args) throws ParseException {  
        Timer timer = new Timer();  
        //1、设定两秒后执行任务
        //timer.scheduleAtFixedRate(new MyTimerTask1(), 2000,1000);
        //2、设定任务在执行时间执行,本例设定时间13:57:00
        SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");  
        Date time = dateFormatter.parse("2014/02/11 14:40:00");  
        timer.schedule(new MyTimerTask1(), time);
    }  
}  
View Code

相关文章: