Java内置定时器Timer

Timer是Java内置的一个定时任务,类似于JavaScript里面的setTimeout()和setInterval()方法,可以延迟一定的时间执行任务,也可以按时间间隔重复执行任务。

Timer实际上就是启动了一个线程进行任务处理的,是异步的。

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class Test {
    public static int  times = 1;
    /**
     *     Timer基本用法
     * */
    public static void main(String[] args) {
        Timer t = new Timer();
        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                System.err.println(new Date() + " ==> " + Thread.currentThread().getName() + "第" + Test.times + "次执行");
                Test.times++;
                if(Test.times >= 5) {
                    System.err.println("定时器结束");
                    cancel();
                }
            }
        };
        t.schedule(task , 1000, 2000);
        /**
         *     scheduleAtFixedRate和schedule 的区别
         *     schedule 是按任务真实执行时间来计算下次执行时间的。
         *  scheduleAtFixedRate 是按上个任务的计划执行时间来计算下次执行时间的。
         *  举个例子:
         *  任务的执行间隔是2s,首次执行延迟时长为1s,当前时间是15:00:00
         *  schedule:
         *      第一次执行时间为15:00:01,下次执行时间为15:00:03
         *      第二次执行时线程抢到CPU是在15:00:04,那第二次执行是在15:00:04,下次执行时间是(15:00:04 + 2s,也就是15:00:06)
         *  scheduleAtFixedRate:
         *      第一次执行时间为15:00:01,下次执行时间为15:00:03
         *      第二次执行时线程抢到CPU是在15:00:04,那第二次执行是在15:00:04,下次执行时间是(15:00:03 + 2s,也就是15:00:05)
         * */
    }
}

 Timer的相关方法

下面是一些源码级别的介绍,不喜欢的可以跳过

猜你喜欢

转载自www.cnblogs.com/chongcheng/p/12819017.html