美文网首页Java 杂谈
java 定时任务Timer

java 定时任务Timer

作者: 代码墨白 | 来源:发表于2018-07-14 12:52 被阅读4次

    import java.text.SimpleDateFormat;

    import java.util.Timer;

    import java.util.TimerTask;

    /**  * 定时任务 */

    public class MyTimerTask extends TimerTask{ 

     /**

    * 通过构造器注入 Timer对象,任务执行后调用Timer的cancel方法终止计时器 

     */  public MyTimerTask(Timer timer) {  this.timer = timer;  }

    Timer timer;

    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    @Override 

     public void run() { // scheduledExecutionTime() : 返回此任务最近实际 执行的安排 执行时间 System.out.println("执行时间 "+format.format(scheduledExecutionTime())); // 测试 任务执行时间超过任务循环周期时使用下面代码 

     /*  try { Thread.sleep(5000);  } catch (InterruptedException e) {  // TODO 自动生成的 catch 块 3e.printStackTrace();  }*/ 

     //如果只执行一次,在这里调用Timer的cancel方法结束任务(调用TimerTask的cancel不管用)  timer.cancel();

     // Timer 终止此计时器 // this.cancel(); // TimerTask 终止此计时器 (不管用) } } 

    //Java初高级一起学习分享,喜欢的话可以我的学习群64弍46衣3凌9,或加资料群69似64陆0吧3

     import java.text.ParseException;

    import java.text.SimpleDateFormat;

    import java.time.LocalDateTime;

    import java.util.Timer; 

     /** * 定时任务 测试 */

    public class MyTimerTest { public static void main(String[] args) throws ParseException {  //创建计时器  Timer timer = new Timer(); 

    //创建任务 MyTimerTask task = new MyTimerTask(timer); System.out.println(LocalDateTime.now()); //执行任务  /

    / 延迟3000毫秒后执行,且只执行一次(执行后不会自动关闭) timer.schedule(task, 3000); 

     //其他方法 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 在指定时间执行 ,只执行一次 30 // timer.schedule(task,format.parse("2018-07-13 14:21:00")); //延迟3000毫秒后,每隔2000毫秒执行一次  // timer.schedule(task, 3000, 2000); //在指定开始执行,之后每隔2000毫秒执行一次

    /* schedule方法与scheduleAtFixedRate方法

    区别 

    * 1.如果当前时间晚于指定时间,以当前时间为开始时间

    * 2.如果任务执行时间超过重复间隔时间,则按照实际时间往后顺延(同步执行) */

    // timer.schedule(task, format.parse("2018-07-13 14:25:00"), 2000); 

     //延迟3000毫秒后,每隔2000毫秒执行一次 // timer.scheduleAtFixedRate(task, 3000, 2000); 

    //在指定开始执行,之后每隔2000毫秒执行一次

    /*schedule方法与scheduleAtFixedRate方法

    区别 

    * 1.如果当前时间晚于指定时间,则以指定时间开始,并把从指定时间到 

     * 当期时间之间该执行的全部补回来

    * 2.如果任务执行时间超过间隔时间,则按照设定间隔时间执行 (异步执行)  */ 

     // timer.scheduleAtFixedRate(task, format.parse("2018-07-12 14:57:00"), 2000); } }

    相关文章

      网友评论

        本文标题:java 定时任务Timer

        本文链接:https://www.haomeiwen.com/subject/rvpjpftx.html