【Java 基础】32 定时调度
文章目录
- Timer 类
- 创建 Timer
- 注意事项
- ScheduledExecutorService 接口
- 创建 ScheduledExecutorService
- 注意事项
- 选择合适的定时调度方式
- Timer 的适用场景
- ScheduledExecutorService 的适用场景
- 总结
在软件开发中,定时任务是一种常见的需求,用于周期性地执行特定的任务或操作。Java 提供了两种主要的定时调度方式:
Timer 类和
ScheduledExecutorService 接口。
Timer 类
创建 Timer
Timer 类是 Java 提供的一个简单的定时调度工具。它允许您计划一个任务在未来的某个时刻执行,也可以以固定的时间间隔重复执行。
示例代码:
import java.time.LocalTime;
import java.util.Timer;
import java.util.TimerTask;
public class Demo {public static void main(String[] args) {Timer timer = new Timer();// 创建一个定时任务,延迟 2000 毫秒后开始执行,每隔 5000 毫秒执行一次timer.schedule(new TimerTaskDemo(), 2000, 5000);}
}class TimerTaskDemo extends TimerTask {@Overridepublic void run() {System.out.println("执行任务: " + LocalTime.now());}
}
输出结果:

注意事项
-
Timer类在执行任务时是单线程的,如果一个任务的执行时间过长,会影响其他任务的执行。 -
如果一个任务在执行过程中抛出未捕获的异常,那么
Timer将终止所有的定时任务。
ScheduledExecutorService 接口
ScheduledExecutorService 是 Java 提供的更强大、灵活的定时调度工具。它基于线程池实现,允许同时执行多个任务,并提供更多的调度选项。
创建 ScheduledExecutorService
示例代码:
import java.time.LocalTime;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;public class Demo {public static void main(String[] args) {ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1);// 创建一个定时任务,延迟 2 秒后开始执行,每隔 5 秒执行一次executorService.scheduleAtFixedRate(() -> System.out.println("执行任务: " + LocalTime.now()),2, 5, TimeUnit.SECONDS);}
}
输出结果:

注意事项
ScheduledExecutorService使用线程池,因此能够更好地处理多个定时任务的并发执行。- 它提供了更灵活的调度选项,例如可以设定首次执行的延迟时间,也可以根据上一次任务的执行完成时间来决定下一次任务的开始时间。
选择合适的定时调度方式
Timer 的适用场景
- 对于简单的定时任务,且任务执行时间短暂的情况,可以选择使用
Timer。 - 适用于单线程执行的场景,不涉及大量的并发任务。
ScheduledExecutorService 的适用场景
-
适用于复杂的定时任务场景,具有更多的调度选项和更灵活的执行方式。
-
当需要处理多个定时任务时,
ScheduledExecutorService更适合,因为它基于线程池,能够更好地处理并发任务。
总结
Java 提供了两种主要的定时调度方式:Timer 和 ScheduledExecutorService。选择合适的调度方式取决于项目的具体需求。对于简单的定时任务,Timer 可以满足需求。而对于更复杂、更灵活的场景,以及需要处理多个定时任务的情况,推荐使用 ScheduledExecutorService。在实际项目中,根据任务的性质和复杂度,选择合适的定时调度方式是提高系统性能和稳定性的重要因素。
相关文章:
【Java 基础】32 定时调度
文章目录 Timer 类创建 Timer注意事项 ScheduledExecutorService 接口创建 ScheduledExecutorService注意事项 选择合适的定时调度方式Timer 的适用场景ScheduledExecutorService 的适用场景 总结 在软件开发中,定时任务是一种常见的需求,用于周期性地执…...
C++ 教程 - 02 复合数据类型
文章目录 数组vector字符串输入输出结构体枚举指针引用综合案例 数组 相同类型的数据的集合{ },通过索引访问元素;在内存中连续存储,属于顺序表;插入、删除时间复杂度 O ( n ) O(n) O(n),访问复杂度 O ( 1 ) O(1) O(1…...
【数据处理】NumPy数组的合并操作,如何将numpy数组进行合并?
,NumPy中的合并操作是指将两个或多个数组合并成一个数组的操作。这种操作可以通过不同的函数来实现。 一、横向合并(水平合并) 横向合并是指将两个具有相同行数的数组按列方向合并成一个数组的操作。在NumPy中,可以使用hstack()…...
JavaScript实现飘窗功能
实现飘窗功能很简单 html代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title…...
Docker笔记:容器转换成镜像,导出导入镜像,数据拷贝,查看日志
docker commit 将容器转换成镜像 可以把容器转换成镜像镜像没有写入权限,但可以通过修改容器把容器制作成新镜像启动容器后,就给容器提供了一个可写层, 在容器里,可安装软件,可创建文件 …转换成镜像,之后…...
串行计时芯片D1380/D1381,2.0V~5.5V 工作电流: 2V时 与TTL 兼容,采用DIP8、SOP8封装
D1380/D1381是一个带秒、分、时、日、日期、月、年的串行时钟保持芯片,每个月多少天以及闰年能自动调节, D1380/D1381低功耗工作方式, D1380/D1381用若干寄存器存储对应信息,一个32.768kHz 的晶振校准时钟,为了使用最小弓|脚,D1380/D1381使用…...
中间件系列 - Redis入门到实战(基础篇)
前言 1.学习视频: 黑马程序员Redis入门到实战教程,深度透析redis底层原理redis分布式锁企业解决方案黑马点评实战项目 2. 本内容仅用于个人学习笔记,如有侵扰,联系删除 3. 本章学习目标: 初始Redis 认识NoSQL认识Redi…...
项目经理和产品经理该如何选择?
最近很多人咨询“项目经理跟产品经理该怎么选,我更适合哪个?”“项目经理跟产品经理哪个更有钱途 ”“项目经理转产品经理好转吗”等等,今天就一次性说清楚项目经理跟产品经理有什么区别,应该怎么选择。 不想看长篇大论的&#x…...
java WebSocket带参数处理使用
1、webSocket实现代码 Component public class WebSocketStompConfig {//这个bean的注册,用于扫描带有ServerEndpoint的注解成为websocket// ,如果你使用外置的tomcat就不需要该配置文件Beanpublic ServerEndpointExporter serverEndpointExporter() {return new ServerEndpoi…...
OkHttp: 拦截器和事件监听器
文章目录 1. 拦截器1. 拦截器链2. 实际案例1. 注册为应用拦截器2. 注册为网络拦截器 3. 如何选择用哪种拦截器1. 应用拦截器2. 网络层拦截器3. 重写请求4. 重写响应 4. 可用性 2. 事件监听器1. 请求的生命周期2. EventListener使用案例3. EventListener.Factory4. 调用失败的请…...
总结一些vue3小知识2
1.el-tree-select和el-tree组件报错(有的下拉选项选择不了,一点击就报错,但是有的却能选择,不会报错) 原因:就如同v-for一样,需要添加key才不会出现渲染错误,而el-tree-select和el-tree组件需要…...
【Excel设置动态图表】
设置系列,设置水平轴标签。 效果如图: 经验总结: 方法1:如果设置A、B列为水平轴标签,目前无法设置只是日期为横轴,店铺名称只在最下面显示一个,只能并排1列显示。 优点:如果多选…...
用 C 写一个卷积神经网络
用 C 写一个卷积神经网络 深度学习领域最近发展很快,前一段时间读transformer论文《Attention Is All You Need》时,被一些神经网络和深度学习的概念搞得云里雾里,其实也根本没读懂。发现深度学习和传统的软件开发工程领域的差别挺大…...
直面双碳目标,优维科技携手奥意建筑打造绿色低碳建筑数智云平台
优维“双碳”战略合作建筑 为落实创新驱动发展战略,增强深圳工程建设领域科技创新能力,促进技术进步、科技成果转化和推广应用,根据《深圳市工程建设领域科技计划项目管理办法》《深圳市住房和建设局关于组织申报2022年深圳市工程建设领域科…...
docker 基础入门
docker 基础入门 引言 在当今快速演进的软件开发领域,Docker 已经成为一个革命性的工具,它极大地改变了我们构建、部署和管理应用程序的方式。作为一种开源容器化平台,Docker 提供了一个轻量级且一致的环境,使得软件能够在几乎任…...
HarmonyOS:NativeWindow 开发指导
场景介绍 NativeWindow 是 HarmonyOS 本地平台化窗口,表示图形队列的生产者端。开发者可以通过 NativeWindow 接口进行申请和提交 Buffer,配置 Buffer 属性信息。 针对 NativeWindow,常见的开发场景如下: ● 通过 NativeWindow…...
汉威科技传感器为农业加点“智慧”
农业是国家之根本,历来受到高度重视,在央视《传感中国》系列节目中,智慧农业独占一期,重要性不言而喻。 随着传感器、物联网、GIS、大数据、5G、人工智能、区块链等技术的快速发展,智慧农业成为种植、养殖行业的新趋势…...
springboot listener、filter登录实战
转载自: www.javaman.cn 博客系统访问: http://175.24.198.63:9090/front/index 登录功能 1、前端页面 采用的是layui-admin框架,文中的验证码内容,请参考作者之前的验证码功能 <!DOCTYPE html> <html lang"zh…...
【数据结构—栈的实现(数组栈)】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、栈 1.1栈的概念及结构 二、栈的实现 2.1头文件的实现—Stack.h 2.2源文件的实现—Stack.c 2.3源文件的测试—test.c 三、栈的实际测试数据展示 3.1正常的出…...
Linux安装Halo(个人网站)
项目简介 1.代码开源:Halo 的项目代码开源在 GitHub 上且处于积极维护状态,截止目前已经发布了 109 个版本。你也可以在上面提交你的问题或者参与代码贡献。2.易于部署:推荐使用 Docker 的方式部署 Halo,便于升级,同时避免了各种环境依赖的问…...
OnmyojiAutoScript:阴阳师智能自动化脚本完全指南
OnmyojiAutoScript:阴阳师智能自动化脚本完全指南 【免费下载链接】OnmyojiAutoScript Onmyoji Auto Script | 阴阳师脚本 项目地址: https://gitcode.com/gh_mirrors/on/OnmyojiAutoScript 还在为阴阳师每日重复任务感到疲惫吗?每天花费数小时在…...
小杰云商城系统源码/小程序源码平台/电商系统源码/完整版/全开源
小杰云商城系统源码 完整版 全开源 基于多款经典商城深度优化重构,不管是功能、颜值、安全、流畅度,直接给你干到天花板! 完美适配易支付V2和mapi支付,拿到手简单配置就能上线运营,不用你再费劲改接口! 功能多到爆炸࿰…...
LingBot-Depth模型优化技巧:处理高分辨率图像的实用方法
LingBot-Depth模型优化技巧:处理高分辨率图像的实用方法 你是不是遇到过这样的情况:拿到一张高分辨率的室内场景照片,兴冲冲地丢给深度估计模型,结果要么显存爆炸,要么生成的效果图边缘模糊、细节丢失,完全…...
Wan2.2-I2V-A14B多场景应用:文旅宣传/电商主图/社交媒体动态生成
Wan2.2-I2V-A14B多场景应用:文旅宣传/电商主图/社交媒体动态生成 1. 开箱即用的视频创作利器 想象一下,你只需要输入一段文字描述,就能自动生成一段高清视频。这就是Wan2.2-I2V-A14B文生视频模型带来的革命性体验。无论你是文旅行业的宣传人…...
OpenClaw+Qwen3.5-9B:法律文档审查助手实战
OpenClawQwen3.5-9B:法律文档审查助手实战 1. 为什么需要AI法律文档助手? 去年接手一个跨境合作项目时,我曾在72小时内手动审阅了137页的英文合同草案。那段经历让我意识到:传统人工审查不仅效率低下,还容易因疲劳遗…...
OpenClaw技能开发模板:5分钟为Kimi-VL-A3B-Thinking创建自定义多模态处理器
OpenClaw技能开发模板:5分钟为Kimi-VL-A3B-Thinking创建自定义多模态处理器 1. 为什么需要自定义技能 上周我在处理一批产品截图和用户反馈时,突然意识到一个痛点:虽然Kimi-VL-A3B-Thinking多模态模型能理解图片内容,但每次都要…...
基于深度学习的文本情感分析改进模型实验方案
基于深度学习的文本情感分析改进模型实验方案 一、实验背景与目的 1.1 背景 情感分析是自然语言处理的核心任务之一,旨在自动识别文本所表达的情感倾向(如正面、负面)。传统机器学习方法依赖人工特征工程,而深度学习方法能够自动学习文本的层次化特征表示。然而,现有模…...
电路板测试点设计与自动化测试实践
1. 测试点的本质作用在电子制造领域,测试点(Test Point)是电路板上那些看似多余的小圆点,但它们却是保证产品质量的关键设计。作为一名有十年经验的硬件工程师,我见过太多因为忽视测试点设计而导致量产失败的案例。测试…...
2025届学术党必备的十大降AI率助手实际效果
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 知网 AI 检测系统借助对文本的分析来生成逻辑以及进行语言模式识别,以此识别机器…...
插件冲突频发?三招让你的WPS回归清爽
插件冲突频发?三招让你的WPS回归清爽 【免费下载链接】WPS-Zotero An add-on for WPS Writer to integrate with Zotero. 项目地址: https://gitcode.com/gh_mirrors/wp/WPS-Zotero 当你在WPS中处理学术文档时,突然发现工具栏上出现了两个Zotero插…...
