使用java.util.Timer和java.util.TimerTask两个类来实现
1.Timer类
public class Timer extends Object
每个Timer对象对应一个后台线程,用于安排将来执行的任务,可以安排执行一次的任务,或是执行多次的任务。如果想要终止计时器任务,可以采用终止方法。
这个类是线程安全的,多个类可以共享一个Timer类,而不需要额外同步。
1.1构造器
public Timer()
public Timer(boolean isDaemon)
public Timer(String name)
public Timer(String name,boolean isDaemon)
1.2方法
public void cancel() //终止此定时器
public void schedule(TimerTask task,Date time)
//任务在指定的时间执行,如果时间在过去,那么将立刻执行任务
public void schedule(TimerTask task,Date firstTime,long period)
//指定的时间开始,重复一段时间执行任务
public void schedule(TimerTask task,long delay,long period)
//指定延迟后,每隔指定时间执行一次任务
还有其他类似方法查看文档
2.TimerTask
public abstract class TimerTisk
extends Object
implements Runnable
2.1方法
public boolean cancel()
//该方法取消任务的执行,如果任务正在执行,则执行完了之后取消
//如果阻止了任务的执行则返回true
public abstract void run()
//抽象方法,任务执行体
public long scheduledExecutionTime()
//返回任务的最近执行的计划执行时间,通常在run中调用来确定当前的执行是否够时间
3.例子
class Time extends TimerTask{
public void run() {
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat();
sdf.applyPattern("yyyy-MM-dd,HH:mm:ss:SS");
System.out.println(sdf.format(d));
}
}
public class Run {
public static void main(String[] args) {
Timer t = new Timer();
t.schedule(new Time(), 2000, 1000);
}
}
输出:
2017-11-16,20:46:14:790
2017-11-16,20:46:15:789
2017-11-16,20:46:16:790
2017-11-16,20:46:17:790
2017-11-16,20:46:18:790
即每隔一秒执行一次任务