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);
    }
  • 相关阅读:
    Taurus.MVC 2.2 开源发布:WebAPI 功能增强(请求跨域及Json转换)
    聊聊程序员如何学习英语单词:写了一个记单词的小程序
    ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core
    关于开启.NET在线提升教育培训的通知!
    彻查手机端浏览博客园出现广告一事!
    ASP.NET Aries 入门开发教程9:业务表单的开发
    ASP.NET Aries 入门开发教程8:树型列表及自定义右键菜单
    ASP.NET Aries 入门开发教程7:DataGrid的行操作(主键操作区)
    ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑
    ASP.NET Aries 入门开发教程5:自定义列表页工具栏区
  • 原文地址:https://www.cnblogs.com/ckfeng/p/15160235.html
Copyright © 2011-2022 走看看