Java教程

Java定时器Timer的使用

本文主要是介绍Java定时器Timer的使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

这是几年前写的旧文,此前发布Wordpress小站上,现在又重新整理。算是温故知新,后续会继续整理。如有错误望及时指出,在此感谢。

我们经常在项目中遇到需要定时执行某个业务的操作.

常见的做法是创建一个线程一直运行着,通过sleep方法来达到定时任务的效果.

其实JDK自带java.util.Timer定时器.

可以帮我们达到:

1.在指定时间执行某个动作;

2.在指定一个固定的时间间隔执行某个动作;

Timer是个执行器,我们只需要给它提交TimerTask任务类,它就会按照我们的定义进行执行.

TimerTask非常简单,就是一个线程.

这里我用固定时间间隔来举例

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Timer;
import java.util.TimerTask;

public class TimeTaskTest1 {

    public static void main(String[] args) {

        MyTimerTask metricTimerTask = new MyTimerTask();

        Timer timer = new Timer();
        // 定义开始等待时间  --- 等待 5 秒
        // 1000ms = 1s
        final long delay = 5000;
        // 定义每次执行的间隔时间
        final long intevalPeriod = 1000 * 5;
        // schedules the task to be run in an interval
        // 安排任务在一段时间内运行
        printNow("app");
        timer.scheduleAtFixedRate(metricTimerTask, delay, intevalPeriod);
//        timer.schedule(metricTimerTask, delay, intevalPeriod);
    }

    public static void printNow(String str) {
        LocalDateTime now = LocalDateTime.now();
        String format = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        System.out.println(str + ":" + format);
    }

    static class MyTimerTask extends TimerTask {
        @Override
        public void run() {
            try {
                printNow("start");
                System.out.println("do something...");
                Thread.sleep(10000);
                printNow("stop");
                System.out.println("---------------");
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
    }
}

总结:

通过定时器,可以帮助我们减少很多不必要的冗余代码.

这篇关于Java定时器Timer的使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!