ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java定时器Timer的使用

2022-06-22 18:34:17  阅读:170  来源: 互联网

标签:定时器 java format Timer Java TimerTask import public


这是几年前写的旧文,此前发布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,format,Timer,Java,TimerTask,import,public
来源: https://www.cnblogs.com/panshan-lurenjia/p/16401874.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有