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);
            }
        }
    }
}

总结:

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

posted @   畔山陆仁贾  阅读(486)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界
点击右上角即可分享
微信分享提示