必威体育Betway必威体育官网
当前位置:首页 > IT技术

scheduleAtFixedRate与schedule区别

时间:2019-08-20 04:13:19来源:IT技术作者:seo实验室小编阅读:75次「手机版」
 

scheduleatfixedrate

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();
        }
    }
}

相关阅读

SSM框架SpringMVC@Scheduled注解简单实现定时任务

第一步:        在Springmvc的xml中加入如下:xmlns:task="http://www.springframework.org/schema/task"http://www.springfr

计划任务 SchedulerFactoryBean 配置

Quartz 是开源任务调度框架中的翘首,它提供了强大任务调度机制,同时保持了使用的简单性。Quartz 允许开发人员灵活地定义触发器的调

scheduleAtFixedRate的用法(Java)

scheduleAtFixedRate(task,time,period)task-所要安排的任务 time-首次执行任务的时间 period-执行一次task的时间间隔,单位毫秒作用:时

定时任务ScheduledThreadPoolExecutor的使用详解

定时任务ScheduledThreadPoolExecutor的使用详解前短时间需要用到一个定时器处理蓝牙设备接收的数据,并且需要处理的频率是很快的,

ScheduledExecutorService:多线程任务调度

今天使用Timer实现任务调度时,阿里巴巴Java开发规范提示 多线程并行处理定时任务时,Timer运行多个TimeTask时,只要其中之一没有捕获

分享到:

栏目导航

推荐阅读

热门阅读