• Java 定时器


    Java 定时器
    package com.su.test.threadtest;

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

    /**

    • 在这里插入代码片使用定时器指定定时任务。
    • timer:计时器
      /
      public class TimerTest {
      public static void main(String[] args) {
      SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
      try {
      Date date = sdf.parse(“2022-01-31 23:30:00”);
      // 创建定时器对象
      Timer t = new Timer();
      //t.schedule(定时任务, 第一次执行时间, 间隔多久执行一次);
      t.schedule(new LogTimerTask(), date, 1000 * 5);
      } catch (ParseException e) {
      e.printStackTrace();
      }
      /
      *
      * 控制台显示:
      * 2024-03-03 21:57:44 430—>完成了一个数据备份
      * 2024-03-03 21:57:49 432—>完成了一个数据备份
      * 2024-03-03 21:57:54 443—>完成了一个数据备份
      * 2024-03-03 21:57:59 451—>完成了一个数据备份
      * 2024-03-03 21:58:04 464—>完成了一个数据备份
      * …
      */
      }
      }

    /**

    • 编写一个定时任务

    • 假设这是一个记录日志的定时任务
      */
      class LogTimerTask extends TimerTask {

      // 编写要执行的任务
      @Override
      public void run() {
      SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss SSS”);
      String nowTime = sdf.format(new Date());
      System.out.println(nowTime + “—>” + “完成了一个数据备份”);
      }
      }

    // 守护线程的方式创建定时器指定定时任务
    public static void main(String[] args) {
    SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
    try {
    Date date = sdf.parse(“2022-01-31 23:30:00”);
    // 创建定时器对象
    // 守护线程的方式,public Timer(boolean isDaemon) {this(“Timer-” + serialNumber(), isDaemon);}
    Timer t = new Timer(true);
    //t.schedule(定时任务, 第一次执行时间, 间隔多久执行一次);
    t.schedule(new LogTimerTask(), date, 1000 * 5);
    } catch (ParseException e) {
    e.printStackTrace();
    }
    /**
    * 即使是死循环,由于该线程是守护着,当用户线程结束,守护线程自动终止
    * 控制台显示(控制台什么都没有):
    *
    */
    }

    // 匿名内部类的方式实现使用定时器指定定时任务;守护线程的方式,控制台什么都没有同上
    public static void main(String[] args) {
    SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
    try {
    Date date = sdf.parse(“2022-01-31 23:30:00”);
    // 创建定时器对象
    Timer t = new Timer();
    /**
    * 也可以采用如下匿名内部类,
    * TimerTask是一个抽象类,抽象类和接口都有构造方法,但不能实例化
    * 以下是通过匿名内部类,即没有名字的类,通过new创建对象
    */
    t.schedule(new TimerTask() {
    @Override
    public void run() {
    SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss SSS”);
    String nowTime = sdf.format(new Date());
    System.out.println(nowTime + “—>” + “完成了一个数据备份”);
    }
    }, date, 1000 * 5);

        } catch (ParseException e) {
            e.printStackTrace();
        }
        /**
         * 控制台显示:
         * 2024-03-03 22:17:26 307--->完成了一个数据备份
         * 2024-03-03 22:17:31 314--->完成了一个数据备份
         * 2024-03-03 22:17:36 317--->完成了一个数据备份
         * 2024-03-03 22:17:41 329--->完成了一个数据备份
         * 2024-03-03 22:17:46 338--->完成了一个数据备份
         * ...........
         */
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
  • 相关阅读:
    Pinely Round 2 (Div. 1 + Div. 2) F. Divide, XOR, and Conquer(区间dp)
    【正厚软件】0基础学IT,来Linux的发展历史吧
    React 全栈体系(十五)
    还在用双层for循环吗?太慢了
    聚观早报|小米14渲染图曝光;蚂蚁金融大模型正式发布
    再见,Visual Basic——曾经风靡一时的编程语言
    JQuery核心函数$
    SwiftFormer:基于Transformer的高效加性注意力用于实时移动视觉应用的模型
    【无标题】
    微服务架构设计模式-(1)单体架构的问题
  • 原文地址:https://blog.csdn.net/friend18750230725/article/details/136439837