首页 > 编程语言 > 详细

Java多线程-定时器Timer的使用

时间:2020-03-25 14:30:19      阅读:71      评论:0      收藏:0      [点我收藏+]

方法 schedule(TimerTask task, Date time)

该方法的作用是在指定的日期执行一次某一任务。

注意:

  TimerTask 是以队列的方式一个一个被顺序执行的,所以执行的时间有可能和预期时间不一致,因为前面的任务有可能消耗的时间较长,则后面的任务运行的时间也会被延迟。

示例:

public class Test {
    private static Timer timer = new Timer();
    static class MyTask extends TimerTask {
        @Override
        public void run() {
            System.out.println("运行了!时间为:" + DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
        }
    }

    public static void main(String[] args) throws ParseException {
        MyTask task = new MyTask();
        Date date = DateUtils.parseDate("2020-03-25 14:01:00", "yyyy-MM-dd HH:mm:ss");
        timer.schedule(task, date);
    }
}

运行结果如下:

技术分享图片

 

方法 schedule(TimerTask task, Date firstTime, long period)

该方法的作用是在指定的日期之后,按指定的间隔周期性的无限循环地执行某一任务。

 

TimerTask类的 cancel() 方法

该方法的作用是将自身从任务队列中清除。

注意:

  cancel() 方法有时不一定会停止执行计划任务,而是正常执行。原因是因为 cancal() 方法没有竞争到 queue 的锁,所以未能执行清除队列的操作导致的。

示例:

public class Test {
    private static Timer timer = new Timer();
    static class MyTaskA extends TimerTask {
        @Override
        public void run() {
            System.out.println("A运行了!时间为:" + DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
            this.cancel();
        }
    }

    static class MyTaskB extends TimerTask {
        @Override
        public void run() {
            System.out.println("B运行了!时间为:" + DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
        }
    }

    public static void main(String[] args) throws ParseException {
        MyTaskA taskA = new MyTaskA();
        MyTaskB taskB = new MyTaskB();
        Date date = DateUtils.parseDate("2020-03-25 14:16:30", "yyyy-MM-dd HH:mm:ss");
        timer.schedule(taskA, date, 2000);
        timer.schedule(taskB, date, 2000);
    }
}

运行结果如图:

技术分享图片

 

Java多线程-定时器Timer的使用

原文:https://www.cnblogs.com/lkc9/p/12565896.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!