java Timer工具类实现定时器任务

第一 schedule 方法 三个参数 按照顺序 (执行的任务方法,开始执行时间,多少时间后循环去执行)  代码可用 

public class TestScheedule {

public static void mutilmethod() throws InterruptedException {
Date date=new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("这是一个定时循环执行的方法"+dateFormat.format(date));
Thread.sleep(1000);

}

public static void main(String[] args) throws Exception {
final SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date startDate = dateFormatter.parse("2019-2-28 9:41:00");
Timer timer = new Timer();
//三个 参数
timer.schedule(new TimerTask() {
@Override
public void run() {
try {
mutilmethod();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}, 0,5000);//0ms后立刻执行 2000ms后循环执行这个方法

}
}
第二种方式
scheduleAtFixedRate方法
public class TestScheduleAtFixed {
public static void mutilmethod() throws InterruptedException {
Date date=new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("这是一个定时循环执行的方法"+dateFormat.format(date));
Thread.sleep(2000);

}
public static void main(String[] args) throws ParseException {
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Date startDate = dateFormatter.parse("2019-2-28 10:24:50");

Timer timer=new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
try {
mutilmethod();
} catch (Exception e) {
e.printStackTrace();
}
}
},startDate,1000);
}
}


总结 当 一个方法执行时间超过 定时器任务设置循环任务执行时间 那么就会按照方法执行时间去执行 方法执行完毕 立刻再去执行方法。
如果一个方法执行时间 不超过定时器设置的任务时间 那么就会按照设置的时间去执行
  总之就一句话  始终按照用时最长的那个去运行。 简单地说就是 

posted @ 2019-02-28 10:36  向上生长6688  阅读(1047)  评论(0编辑  收藏  举报