Timer类的定时器在使用时,都需要构建一个定时任务(TimerTask),因此在使用定时器的时候,都需要创建一个TimerTask类的对象(为了节省空间和方便阅读,将TimerTask类的对象以匿名类的形式声明),而Timer类中常用的方法如下
下面的代码则针对上述方法,一一进行使用
public static void main(String[] args) {
//使用构造方法创建两个对象
Timer timer = new Timer();
Timer timer2 = new Timer("定时器");
//普通方法
//1.使用void schedule(TimerTask task,Date time)指定在现在5秒后打印输出语句
Date date = new Date(System.currentTimeMillis()+5000);
//倒计时
for (int i = 5; i > 0; i--) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(i);
}
//指定五秒后打印输出
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("五秒后打印输出");
}
}, date);
//2.使用void schedule(TimerTask task,long delay )指定在3秒后打印输出语句
timer.schedule(new TimerTask(){
@Override
public void run() {
System.out.println("延时3秒打印");
}
}, 3000);
//3.使用void schedule(TimerTask task, Date first,long period)从现在开始打印输出,每间隔1秒
timer2.schedule(new TimerTask(){
@Override
public void run() {
System.out.println("现在开始打印输出,间隔1秒");
}
}, new Date() , 1000L);
//4.使用void schedule(TimerTask task,long delay,long period).延迟2秒后打印输出,间隔1秒
timer2.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("延迟2秒后打印输出,间隔1秒");
}
}, 2000, 1000);
//5.使用void scheduleAtFixedRate(TimerTask task,Date first,long period)从两秒之前打印输出,间隔1秒
Date date2 = new Date(System.currentTimeMillis()-2000);
timer2.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
System.out.println("两秒之前打印输出,间隔1秒");
}
}, date2, 1000);
//6.使用void scheduleAtFixedRate(TimerTask task,long delay,long period)延迟三秒后打印,间隔两秒
timer2.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
System.out.println("延迟三秒后打印,间隔两秒");
}
}, 3000, 2000);
//7.使用void cancel() 终结任务
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("两秒后打印,并结束任务");
}
}, 2000);
timer.cancel();
}
} ava
在这里插入代码片