admin管理员组文章数量:1567011
schedule和scheduleAtFixedRate的区别:
如果指定开始执行的时间在当前系统运行时间之前,scheduleAtFixedRate会把已经过去的时间也作为周期执行(追赶性)而下一次执行的时间是参考上一次执行结束的时间,而schedule不会把过去的时间算上,会立即执行一次,下一次执行时间以上一次开始的时间作为参考。
/**
* describe:不延时追赶性测试
*
* @author gary
* @date 2019/02/20
*/
public class TimerTest2 {
private static Timer timer = new Timer();
static public class MyTask extends TimerTask {
@Override
public void run() {
System.out.println("start!时间是:" + new Date());
System.out.println("end!时间是:" + new Date());
}
}
/**
* 当前时间:Wed Feb 20 19:59:31 GMT+08:00 2019
* start!时间是:Wed Feb 20 19:59:31 GMT+08:00 2019
* end!时间是:Wed Feb 20 19:59:31 GMT+08:00 2019
* start!时间是:Wed Feb 20 19:59:31 GMT+08:00 2019
* end!时间是:Wed Feb 20 19:59:31 GMT+08:00 2019
* start!时间是:Wed Feb 20 19:59:31 GMT+08:00 2019
* end!时间是:Wed Feb 20 19:59:31 GMT+08:00 2019
* start!时间是:Wed Feb 20 20:00:00 GMT+08:00 2019
* end!时间是:Wed Feb 20 20:00:00 GMT+08:00 2019
* @param args
*/
public static void main(String[] args) {
try {
MyTask myTask = new MyTask();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dataString = "2019-2-20 19:51:00";
Date dateRef = sdf.parse(dataString);
System.out.println("当前时间:" + new Date());
//timer.schedule(myTask, dateRef, 3000);
timer.scheduleAtFixedRate(myTask, dateRef, 3*60*1000);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
/**
* describe:不延时追赶性测试
*
* @author gary
* @date 2019/02/20
*/
public class TimerTest3 {
private static Timer timer = new Timer();
static public class MyTask extends TimerTask {
@Override
public void run() {
System.out.println("start!时间是:" + new Date());
System.out.println("end!时间是:" + new Date());
}
}
/**
* 当前时间:Wed Feb 20 20:03:41 GMT+08:00 2019
* start!时间是:Wed Feb 20 20:03:41 GMT+08:00 2019
* end!时间是:Wed Feb 20 20:03:41 GMT+08:00 2019
* start!时间是:Wed Feb 20 20:06:41 GMT+08:00 2019
* end!时间是:Wed Feb 20 20:06:41 GMT+08:00 2019
* @param args
*/
public static void main(String[] args) {
try {
MyTask myTask = new MyTask();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dataString = "2019-2-20 19:51:00";
Date dateRef = sdf.parse(dataString);
System.out.println("当前时间:" + new Date());
timer.schedule(myTask, dateRef, 3*60*1000);
//timer.scheduleAtFixedRate(myTask, dateRef, 3*60*1000);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
本文标签: 区别scheduleAtFixedRateschedule
版权声明:本文标题:scheduleAtFixedRate与schedule区别 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1725781942a1042290.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论