zoukankan      html  css  js  c++  java
  • Timer类的schedule和scheduleAtFixedRate 简单应用

    Timer类可以用作定时任务,主要的方法有schedule和scheduleAtFixedRate。

    • schedule(TimerTask task, Date time)

    安排在指定的时间执行指定的任务

    • schedule(TimerTask task, Date firstTime, long period)

    安排指定的任务在指定的时间开始进行重复的固定延迟执行

    • schedule(TimerTask task, long delay)

    安排在指定延迟后执行指定的任务

    • schedule(TimerTask task, long delay, long period)

    安排指定的任务从指定的延迟后开始进行重复的固定延迟执行

    • scheduleAtFixedRate(TimerTask task, Date firstTime, long period)

    安排指定的任务在指定的时间开始进行重复的固定速率执行

    • scheduleAtFixedRate(TimerTask task, long delay, long period)

    安排指定的任务在指定的延迟后开始进行重复的固定速率执行。

    下面是2种定时任务的主要区别,主要体现在2方面:

    • 1.启动时间在指定时间之后

    schedule不会将过去的时间计算在内

    SimpleDateFormat fTime = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");

      Date d1 = fTime.parse("2014/04/25 14:10:00");

      t.schedule(new TimerTask(){

       public void run()

       {

           System.out.println("this is task running");

       }

      },d1,3*60*1000);

    如果是在2014/04/25 14:20执行程序,则会在2014/04/25 14:23输出第一条:this is task running

    scheduleAtFixedRate会将过去的时间计算在内

    SimpleDateFormat fTime = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");

      Date d1 = fTime.parse("2014/04/25 14:10:00");

      t.scheduleAtFixedRate(new TimerTask(){

       public void run()

       {

           System.out.println("this is task running");

       }

      },d1,3*60*1000);

    如果是在2014/04/25 14:20执行程序,则会输出第三条:this is task running,第四条将会在2014/04/25 14:22输出

    • 2.任务延迟时的处理不同

    schedule如果由于任何原因(如垃圾回收或其他后台活动)而延迟了某次执行,则后续执行也将被延迟。

    schedule适用于那些需要“平稳”运行的重复活动。如以固定时间间隔闪烁的光标。

    scheduleAtFixedRate如果由于任何原因(如垃圾回收或其他后台活动)而延迟了某次执行,则将快速连续地出现两次或更多的执行,从而使后续执行能够“追赶上来”。

    scheduleAtFixedRate适用于那些对绝对时间敏感的重复执行活动,如每小时准点打钟报时,或者在每天的特定时间运行已安排的维护活动。

     Timer是JDK提供的定时器类,更为复杂的应用可以考虑使用Quartz,Quartz 提供了比Timmer更为强大的功能,更好地完成定时任务。

     ScheduledThreadPoolExecutor可以完成在线程池中定时的调用任务。

  • 相关阅读:
    用csc命令行手动编译cs文件
    笔录---果壳中的C#第一章
    Visual Studio2012快捷键总结
    JavaScript 二维数组排列组合2
    JavaScript 递归法排列组合二维数组2
    JavaScript 递归法排列组合二维数组
    JavaScript 二维数组排列组合
    在 CentOS6 上安装 GraphicsMagick-1.3.30
    Execution default-resources of goal org.apache.maven.plugins:maven-resources-plugin:2.6:resources failed: Unable to load the mojo 'resources' (or one of its required components)
    java.sql.SQLException: Column count doesn't match value count at row 1
  • 原文地址:https://www.cnblogs.com/lnlvinso/p/3688611.html
Copyright © 2011-2022 走看看