timer.schedule(task, firstTime,
period);
task参数是,TimerTask
类,在包:import java.util.TimerTask .使用者要继承该类,并实现 public void run()
方法,因为 TimerTask 类 实现了 Runnable 接口。
firstTime参数是,当你调用该方法后,该方法必然会调用 TimerTask 类
TimerTask 类 中的 run() 方法,这个参数就是这两者之间的差值,转换成汉语的意思就是说,用户调用 schedule()
方法后,要等待这么长的时间才可以第一次执行 run() 方法。
period参数是,第一次调用之后,从第二次开始每隔多长的时间调用一次 run()
方法。
schedule和scheduleAtFixedRate的区别在于,如果指定开始执行的时间在当前系统运行时间之前,scheduleAtFixedRate会把已经过去的时间也作为周期执行,而schedule不会把过去的时间算上。
schedule
import java.util.Timer;
import java.util.TimerTask;
public class TestTimer {
static Timer
timer = null;
public
static void main(String[] args) {
timer = new Timer();
System.out.println("-----------定时间器已经启动。。。。。。");
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("运行我了哦!!!");
}
}, 0, 5*1000);
}
}
|
scheduleAtFixedRate
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class TestTimer {
public
static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd
HH:mm:ss");
try {
Date datetime = sdf .parse("2007/07/31
23:59:00");
timer = new Timer();
System.out.println("-----------定时间器已经启动。。。。。。");
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
System.out.println("scheduleAtFixedRate -----test");
}
},
datetime , 5*1000);
} catch (ParseException e) {
e.printStackTrace();
}
}
|