首先查看一下API文档中关于Timer类的介绍以及它所含有的方法(包括构造函数以及其他函数)以及涉及到的TimerTask类
Timer() 创建一个新计时器。 |
Timer(boolean isDaemon) 创建一个新计时器,可以指定其相关的线程作为守护程序运行。 |
Timer(String name) 创建一个新计时器,其相关的线程具有指定的名称。 |
Timer(String name, boolean isDaemon) 创建一个新计时器,其相关的线程具有指定的名称,并且可以指定作为守护程序运行。 |
方法摘要 | |
---|---|
无返回值 |
cancel() 终止此计时器,丢弃所有当前已安排的任务。 |
返回int型 |
purge() 从此计时器的任务队列中移除所有已取消的任务。 |
无返回值 |
schedule(TimerTask task,Date time) 安排在指定的时间执行指定的任务。 |
无返回值 |
schedule(TimerTask task,Date firstTime, long period) 安排指定的任务在指定的时间开始进行重复的固定延迟执行。 |
无返回值 |
schedule(TimerTask task, long delay) 安排在指定延迟后执行指定的任务。 |
无返回值 |
schedule(TimerTask task, long delay, long period) 安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。 |
无返回值 |
scheduleAtFixedRate(TimerTask task,Date firstTime, 安排指定的任务在指定的时间开始进行重复的固定速率执行。 |
无返回值 |
scheduleAtFixedRate(TimerTask task, long delay, long period) 安排指定的任务在指定的延迟后开始进行重复的固定速率执行。 |
package test.wyf.Timer;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class TimerTest {
public static void main(String[] args) {
Timer timer=new Timer();
TimerTask task=new TimerTask(){
public void run(){
System.out.println("running men");
}
};
//单个执行定时器的这些方法
SimpleDateFormat SDF=new SimpleDateFormat("yyyyMMdd HHmmss");
//这里的5000,是指5秒之后
////指定时间执行某一任务
//try {
//timer.schedule(task, SDF.parse("20150121 151500"));
//} catch (ParseException e) {
//// TODO Auto-generated catch block
//e.printStackTrace();
//}
////指定定时器开始的时间,以及重复执行的时间间隔
//try {
//timer.schedule(task,SDF.parse("20150121 145400"), 5000);
//} catch (ParseException e) {
//// TODO Auto-generated catch block
//e.printStackTrace();
//}
////指定延迟之后执行某一任务
//timer.schedule(task, 5000);
////在指定的延迟之后,按照重复的时间间隔重复执行任务------标识方法4
//timer.schedule(task, 5000, 5000);
////安排指定的任务在指定的时间开始进行重复的固定速率执行------标识方法5
//try {
//timer.scheduleAtFixedRate(task, SDF.parse("20150121 152500"), 5000);
//} catch (ParseException e) {
//// TODO Auto-generated catch block
//e.printStackTrace();
//}
////安排指定的任务在指定的延迟后开始进行重复的固定速率执行,和方法4其实运行效果是一样的<span style="font-family: Arial, Helvetica, sans-serif;">------标识方法6</span>
timer.scheduleAtFixedRate(task,5000,5000);
}
}
上面的是一个一个的方法执行的,下面同时执行两个方法,就以上例中标识方法4和标识方法6为例
package test.wyf.Timer;以前觉得定时器很神秘呢,O(∩_∩)O~,其实挺好玩的
import java.util.Timer;
import java.util.TimerTask;
public class DoubleTimers {
public static void main(String[] args) {
Timer timer=new Timer();
TimerTask task=new TimerTask(){
public void run(){
System.out.println("running men");
}
};
TimerTask job=new TimerTask(){
public void run(){
System.out.println("奔跑吧兄弟");
}
};
timer.schedule(task, 5000, 5000);
timer.scheduleAtFixedRate(job,5000,5000);
//二者的运行效果是一致的,只是打印到控制台的字不同而已
}
}