Test.java 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import java.util.Date;
  2. import java.util.Timer;
  3. import org.apache.commons.lang.time.FastDateFormat;
  4. public class Test {
  5. static class DemoTimeTask extends java.util.TimerTask {
  6. public void run() {
  7. System.out.println("run:" + FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss").format(new Date()));
  8. }
  9. }
  10. // ??? 某一个时间段内,重复执行
  11. // runTime:第一次执行时间
  12. // delay: 延迟执行的毫秒数,即在delay毫秒之后第一次执行
  13. // period:重复执行的时间间隔
  14. public static Timer mainTimer;
  15. public static void main(String[] args) {
  16. // 调度器
  17. mainTimer = new Timer();
  18. // Demo任务
  19. DemoTimeTask timeTask = new DemoTimeTask();
  20. System.out.println("now:" + FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss").format(new Date()));
  21. // 1、在特定时间执行任务,只执行一次
  22. //Date runTime = DateUtils.addSeconds(new Date(), 1);
  23. //mainTimer.schedule(timeTask, runTime); // runTime
  24. // 2、在特定时间之后执行任务,只执行一次
  25. //long delay = 1000;
  26. //mainTimer.schedule(timeTask, delay); // delay/ms
  27. // 3、指定第一次执行的时间,然后按照间隔时间,重复执行
  28. //Date firstTime = DateUtils.addSeconds(new Date(), 1);
  29. //long period = 1000;
  30. //mainTimer.schedule(timeTask, firstTime, period); // "period/ms" after "firstTime"
  31. // 4、在特定延迟之后第一次执行,然后按照间隔时间,重复执行
  32. //long delay = 1000;
  33. //long period = 1000;
  34. //mainTimer.schedule(timeTask, delay, period); // "period/ms" after "delay/ms"
  35. // 5、第一次执行之后,特定频率执行,与3同
  36. //Date firstTime = DateUtils.addSeconds(new Date(), 1);
  37. //long period = 1000;
  38. //mainTimer.scheduleAtFixedRate(timeTask, firstTime, period);
  39. // 6、在delay毫秒之后第一次执行,后按照特定频率执行
  40. long delay = 1000;
  41. long period = 1000;
  42. mainTimer.scheduleAtFixedRate(timeTask, delay, period);
  43. /**
  44. * <1>schedule()方法更注重保持间隔时间的稳定:保障每隔period时间可调用一次
  45. * <2>scheduleAtFixedRate()方法更注重保持执行频率的稳定:保障多次调用的频率趋近于period时间,如果任务执行时间大于period,会在任务执行之后马上执行下一次任务
  46. */
  47. // Timer注销
  48. mainTimer.cancel();
  49. }
  50. }