zoukankan      html  css  js  c++  java
  • 定时器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);
    }
  • 相关阅读:
    截取文件路径组成新文件路径
    jsoup选择器
    正则小示例
    一个没有经过优化的过滤指定目录下的指定扩展名文件的算法
    正则表达式生成问题
    链接中带换行的页面查找替换问题
    数组扩容测试
    LeetCode 3.无重复字符的最长子串
    LeetCode 200.岛屿数量
    LeetCode 560.和为K的子数组
  • 原文地址:https://www.cnblogs.com/ckfeng/p/15160235.html
Copyright © 2011-2022 走看看