Java 杂谈

java 定时任务Timer

2018-07-14  本文已影响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); } }

上一篇下一篇

猜你喜欢

热点阅读