java中timer的schedule和scheduleAtFixedRate方法区别详解

 更新时间:2017年12月05日 15:25:08   作者:蓝色星辰  
这篇文章主要为大家详细介绍了java中timer的schedule和scheduleAtFixedRate方法区别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

timer的schedule和scheduleAtFixedRate方法一般情况下是没什么区别的,只在某个情况出现时会有区别--当前任务没有来得及完成下次任务又交到手上。 

我们来举个例子:

暑假到了老师给schedule和scheduleAtFixedRate两个同学布置作业。

老师要求学生暑假每天写2页,30天后完成作业。

这两个学生每天按时完成作业,直到第10天,出了意外,两个学生出去旅游花了5天时间,这5天时间里两个人都没有做作业。任务被拖延了。

这时候两个学生采取的策略就不同了:

schedule重新安排了任务时间,旅游回来的第一天做第11天的任务,第二天做第12天的任务,最后完成任务花了35天。

scheduleAtFixedRate是个守时的学生,她总想按时完成老师的任务,于是在旅游回来的第一天把之前5天欠下的任务以及第16天当天的任务全部完成了,之后还是按照老师的原安排完成作业,最后完成任务花了30天。

package day01;

import java.text.SimpleDateFormat;
import java.util.Timer;
import java.util.TimerTask;

public class Test01 {
  public static void main(String[] args) {
    final Timer timer = new Timer();
    //timer.scheduleAtFixedRate(new TimerTask() {
    timer.schedule(new TimerTask() {//分别注释这行和上面这行试一试效果
      int count = 1;

      @Override
      public void run() {
        count++;
        if (count == 10) {
          try {
            Thread.sleep(5000);
          } catch (InterruptedException e) {
            System.out.println("延迟5s");
            e.printStackTrace();
          }
        }
        SimpleDateFormat sf = new SimpleDateFormat(
            "yyyy MM dd hh:mm:ss");
        System.out.println("当前时间:"
            + sf.format(System.currentTimeMillis()) + "计划时间:"
            + sf.format(scheduledExecutionTime()));
      }
    }, 1000, 1000);
  }
}

希望能帮到大家!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • spring mvc配置bootstrap教程

    spring mvc配置bootstrap教程

    这篇文章主要为大家详细介绍了spring mvc配置bootstrap,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Dubbo负载均衡策略介绍

    Dubbo负载均衡策略介绍

    负载均衡改善了跨多个计算资源(例如计算机,计算机集群,网络链接,中央处理单元或磁盘驱动的的工作负载分布。负载平衡旨在优化资源使用,最大化吞吐量,最小化响应时间,并避免任何单个资源的过载
    2022-09-09
  • SpringBoot多文件分布式上传功能实现

    SpringBoot多文件分布式上传功能实现

    本文详细介绍了如何在SpringBoot中实现多文件分布式上传,并用代码给出了相应的实现思路和实现步骤,感兴趣的朋友跟随小编一起看看吧
    2023-06-06
  • idea 普通文件夹 转换成 module操作

    idea 普通文件夹 转换成 module操作

    这篇文章主要介绍了idea 普通文件夹 转换成 module操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Java实现高并发秒杀的七种方式

    Java实现高并发秒杀的七种方式

    本文主要介绍了Java实现高并发秒杀的六种方式,包括使用缓存、数据库乐观锁、数据库悲观锁、分布式锁、队列限流、令牌桶算法和限流器,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • SpringMVC + jquery.uploadify实现上传文件功能

    SpringMVC + jquery.uploadify实现上传文件功能

    文件上传是很多项目都会使用到的功能,SpringMVC当然也提供了这个功能。不过小编不建议在项目中通过form表单来提交文件上传,这样做的局限性很大。下面这篇文章主要介绍了利用SpringMVC + jquery.uploadify实现上传文件功能的相关资料,需要的朋友可以参考下。
    2017-06-06
  • RestTemplate使用Proxy代理作为跳板发送请求

    RestTemplate使用Proxy代理作为跳板发送请求

    这篇文章主要为大家介绍了RestTemplate使用代理proxy作为跳板发送请求的方法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-03-03
  • 如何自定义feign调用实现hystrix超时、异常熔断

    如何自定义feign调用实现hystrix超时、异常熔断

    这篇文章主要介绍了自定义feign调用实现hystrix超时、异常熔断的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • java 装饰模式(Decorator Pattern)详解及实例代码

    java 装饰模式(Decorator Pattern)详解及实例代码

    装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装
    2016-10-10
  • springboot快速整合Mybatis组件的方法(推荐)

    springboot快速整合Mybatis组件的方法(推荐)

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。这篇文章主要介绍了springboot快速整合Mybatis组件的方法,需要的朋友可以参考下
    2019-11-11

最新评论