Java定时器Timer的使用
2022/6/23 1:19:44
本文主要是介绍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的使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?
- 2024-05-09企业src漏洞挖掘-有意思的命令执行
- 2024-05-08阿里云域名注册流程,分享给第一次购买域名的新手站长!