Java入门级简单定时任务TimerTask

2023-09-22 01:30:50

如果要执行一些简单的定时器任务,无须做复杂的控制,也无须保存状态,那么可以考虑使用JDK 入门级的定期器Timer来执行重复任务。
 
一、原理
 
JDK中,定时器任务的执行需要两个基本的类:
    java.util.Timer;
    java.util.TimerTask;
 
要运行一个定时任务,最基本的步骤如下:
1、建立一个要执行的任务TimerTask。
2、创建一个Timer实例,通过Timer提供的schedule()方法,将 TimerTask加入到定时器Timer中,同时设置执行的规则即可。
 
当程序执行了Timer初始化代码后,Timer定时任务就会按照设置去执行。
 
Timer中的schedule()方法是有多种重载格式的,以适应不同的情况。该方法的格式如下:
 void schedule(TimerTask task, Date time)
          安排在指定的时间执行指定的任务。
 void schedule(TimerTask task, Date firstTime, long period)
          安排指定的任务在指定的时间开始进行重复的固定延迟执行。
 void schedule(TimerTask task, long delay)
          安排在指定延迟后执行指定的任务。
 void schedule(TimerTask task, long delay, long period)
          安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。
 
Timer是线程安全的,此类可扩展到大量同时安排的任务(存在数千个都没有问题)。其所有构造方法都启动计时器线程。可以调用cancel() 终止此计时器,丢弃所有当前已安排的任务。purge()从此计时器的任务队列中移除所有已取消的任务。此类不提供实时保证:它使用 Object.wait(long) 方法来安排任务。
 
TimerTask是一个抽象类,由 Timer 安排为一次执行或重复执行的任务。它有一个抽象方法run()----计时器任务要执行的操作。因此,每个具体的任务类都必须继承TimerTask类,并且重写run()方法。另外它还有两个非抽象的方法:
 boolean cancel()
          取消此计时器任务。
 long scheduledExecutionTime()
          返回此任务最近实际 执行的安排 执行时间。
 
二、例子
 
下面用Timer实现一个简单例子:
 

package stu.timer;

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

/**
* 重复执行的任务
*
*/
public class TestTimerTask extends TimerTask {
        /**
         * 此计时器任务要执行的操作。
         */
        public void run() {
                Date executeTime = new Date(this.scheduledExecutionTime());
                System.out.PRintln("本次任务执行的时间是" + executeTime);
        }
}

package stu.timer;

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

/**
* 测试JDK Timer的执行
*
*/
public class TestTimer {
        public static void main(String[] args) {
                Timer timer = new Timer();
                TimerTask task = new TestTimerTask();
                timer.schedule(task, 500L, 1000L);
        }
}

 
运行结果:
本次任务执行的时间是Thu Oct 09 09:47:57 CST 2022
本次任务执行的时间是Thu Oct 09 09:47:58 CST 2022
本次任务执行的时间是Thu Oct 09 09:47:59 CST 2022
本次任务执行的时间是Thu Oct 09 09:48:00 CST 2022
本次任务执行的时间是Thu Oct 09 09:48:01 CST 2022
本次任务执行的时间是Thu Oct 09 09:48:02 CST 2022
本次任务执行的时间是Thu Oct 09 09:48:03 CST 2022
本次任务执行的时间是Thu Oct 09 09:48:04 CST 2022
        ...... 

更多推荐

配置OSPFv3基本功能 华为笔记

1.1实验介绍1.1.1关于本实验OSPF协议是为IP协议提供路由功能的路由协议。OSPFv2(OSPF版本2)是支持IPv4的路由协议,为了让OSPF协议支持IPv6,技术人员开发了OSPFv3(OSPF版本3)。无论是OSPFv2还是OSPFv3,OSPF协议的基本运行原理是没有区别的,然而,由于IPv4和IPv6

【华为云云耀云服务器L实例评测】- 云原生实践,快捷部署人才招聘平台容器化技术方案!

🤵‍♂️个人主页:@AI_magician📡主页地址:作者简介:CSDN内容合伙人,全栈领域优质创作者。👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!🐱‍🏍🙋‍♂️声明:本人目前大学就读于大二,研究兴趣方向人工智能&硬件(虽然硬件还没开始玩,但一直很感兴趣!希望大佬带带)摘要:感谢华为云提供的测

线性矩阵不等式(LMI)在控制理论中的应用

目录(一)Matlab中的LMI处理工具包(二)为什么LMI成为控制理论领域重要工具?(三)LMI在与Lyapunov不等式的关系(1)线性矩阵不等式(2)线性矩阵不等式系统(3)舒尔(Schur)补(四)LMI中常见引理引理2(广义KYP引理[4])推论1(广义KYP引理推论[4])引理3(射影定理[1])引理4(J

港联证券:十一黄金周将至,旅游出行板块强势拉升,长白山一度涨停

游览出行板块18日盘中发力拉升,到发稿,长白山涨近7%,盘中一度触及涨停;全聚德、中国中免涨逾5%,君亭酒店、锦江酒店涨约4%,首旅酒店、金陵饭馆、三特索道、曲江文旅等走高。消息面上,伴随暑期游收官,十一黄金周游览产品预订炽热进行中。境内游方面,依据携程黑板报数据计算,国庆出游需求热度一路上扬,到9月6日,国内游览产品

短视频矩阵系统,短视频矩阵源码技术开发

开发短视频矩阵系统的源码需要以下步骤:确定系统需求:根据客户的需求,确定系统的功能和特点,例如用户注册登录、视频上传、视频浏览、评论点赞等。设计系统架构:根据系统需求,设计系统的整体架构,包括前端、后端、数据库等组件的功能和交互方式。选择技术栈:根据系统的特点和需求,选择适合的技术栈,包括前端框架、后端语言、数据库等。

【每日一题】74. 搜索二维矩阵

74.搜索二维矩阵-力扣(LeetCode)给你一个满足下述两条属性的mxn整数矩阵:每行中的整数从左到右按非递减顺序排列。每行的第一个整数大于前一行的最后一个整数。给你一个整数target,如果target在矩阵中,返回true;否则,返回false。示例1:输入:matrix=[[1,3,5,7],[10,11,1

旅游旺季,酒店要如何做好报修管理工作?

随着旅游业的蓬勃发展,每年的旅游旺季都会带来大量的游客涌入各个城市和景区,这也使得酒店行业的客流量激增。为了满足客人的需求,酒店必须提供高质量的服务和舒适的住宿环境。然而,由于客流量的增加,酒店的设备使用频率也随之增加,容易出现故障和损坏的情况。这不仅会影响客人的入住体验,还可能引发安全隐患。因此,酒店管理者需要高度关

快速用Python进行数据分析技巧详解

概要一些小提示和小技巧可能是非常有用的,特别是在编程领域。有时候使用一点点黑客技术,既可以节省时间,还可能挽救“生命”。一个小小的快捷方式或附加组件有时真是天赐之物,并且可以成为真正的生产力助推器。所以,这里有一些小提示和小技巧,有些可能是新的,但我相信在下一个数据分析项目中会让你非常方便。Pandas中数据框数据的P

基于JAVA+SSM+微信小程序+MySql的图书捐赠管理系统设计与实现

✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌🍅文末获取项目下载方式🍅一、项目背景介绍:在当今社会,图书捐赠是一种普遍而有益的行为,旨在促进阅读、教育和知识传播。图书捐赠可

手动模式配置链路聚合

以下图配置为例:各PC配置如下配置LSW1#划分vlan1030<Huawei>sysEntersystemview,returnuserviewwithCtrl+Z.[Huawei]sysnameLSW1[LSW1]diSep16202314:23:44-08:00LSW1DS/4/DATASYNC_CFGCHANG

记:sx1278芯片

目录lora数字接口静态配置寄存器状态寄存器lora模式FIFO数据缓存数字IO引脚映射FIFO操作原理lora调制解调器操作模式LoRa调制解调器状态机序列数据发送序列数据接收序列单一接收操作模式连续接收操作模式从FIFO数据缓存提取有效负载数据基于前导码起始的数据包过滤lora数字接口lora调制解调器有三种数字接

热文推荐