• 定时器Timer


    定时器在业务中有不可缺少的作用,当然啦,你也可以用其他的...

    方式一

    指定时间做某一件是,只执行一次

     //指定时间做某一件是,只执行一次
        public static void main(String[] args) throws ParseException {
            Timer mTimer = new Timer();
            String time = "2021-08-18 21:22:00";
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date parse = sdf.parse(time);
            mTimer.schedule(new Test01(mTimer), parse);
        }
    
    }
    
    
    class Test01 extends TimerTask {
    
        Timer timer = null;
    
        public Test01() {
        }
    
        public Test01(Timer timer) {
            this.timer = timer;
        }
    
        @Override
        public void run() {
            System.out.println("执行");
            //执行完任务后终止该计时器
            timer.cancel();
        }

    方式二

    在指定延迟后执行指定的任务,只执行一次

      //在指定延迟后执行指定的任务,只执行一次
        public static void main(String[] args) {
            Timer mTimer = new Timer();
            //延迟一秒后执行任务; 1000=1秒,单位:毫秒
            mTimer.schedule(new Test02(mTimer), 3000);
        }
    
    }
    
    
    class Test02 extends TimerTask {
    
        Timer timer = null;
    
        public Test02() {
        }
    
        public Test02(Timer timer) {
            this.timer = timer;
        }
    
        @Override
        public void run() {
            System.out.println("执行");
            //执行完任务后终止该计时器
            timer.cancel();
        }

    方式三

    指定的任务在指定的延迟后开始进行重复的固定延迟执行:

        //指定的任务在指定的延迟后开始进行重复的固定延迟执行:
        public static void main(String[] args) {
            Timer mTimer = new Timer();
            //延迟一秒后执行任务,每个一秒执行一次
            mTimer.schedule(new Test03(), 0, 1000);
        }
    
    }
    
    
    class Test03 extends TimerTask {
    
        @Override
        public void run() {
            System.out.println("执行");
        }

    附加

       public static void main(String[] args) {
            //Runnable:实现了Runnable接口,jdk就知道这个类是一个线程
            Runnable runnable = new Runnable() {
                //创建 run 方法
                public void run() {
                    // task to run goes here
                    System.out.println("Hello, stranger");
                }
            };
            // ScheduledExecutorService:是从Java SE5的java.util.concurrent里,
            // 做为并发工具类被引进的,这是最理想的定时任务实现方式。
            ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
            // 第二个参数为首次执行的延时时间,第三个参数为定时执行的间隔时间
            // 10:秒   5:秒
            // 第一次执行的时间为2秒,然后每隔1秒执行一次
            service.scheduleAtFixedRate(runnable, 2, 1, TimeUnit.SECONDS);
        }

    方式四

    指定延迟时间开始执行重复的操作(指定重复操作多少次后,再指定执行你想要的任务后停止定时器)

    public static void main(String[] args) {
    Timer timer = new Timer();
    timer.schedule(new TimerTask() {
    int times = 0;

    public void run() {
    times = times + 1;
    if (times >= 10) {
    times = 0;
    //一分钟后自动取消转单
    timer.cancel();
    }
    log.info("Timer执行-->{}", times + "次");
    }
    }, 0, 1000);
    }
  • 相关阅读:
    内部类
    java的静态方法多态和匿名对象
    java的重载 和重写
    java多态成员的特点
    java 接口的概念
    linux时间修改-hwclock和date
    mysql配置主从复制和常见问题
    mysql日志种类、二进制日志模式、mysqlbinlog解析二进制日志
    mysql主从复制介绍
    mysql备份与还原-mysqldump备份、mysql与source还原
  • 原文地址:https://www.cnblogs.com/ckfeng/p/15160235.html
Copyright © 2020-2023  润新知