网站首页 > java教程 正文
JAVA定时任务主要有两种,是Timer和ScheduledThreadPoolExecutor
Timer是基于绝对时间的,对系统时间比较敏感, 而ScheduledThreadPoolExecutor 则是基于相对时间;Timer是内部是单一线程,而ScheduledThreadPoolExecutor内部是个线程池,所以可以支持多个任务并发执行。
Timer常用API
ScheduledThreadPoolExecutor常用API
下面主要讲一下如何使用这两种。
Timer举例
shedule方法执行结果如下,后续的线程会一直延迟。
Mon Oct 08 21:12:30 CST 2018 timer begin.... Mon Oct 08 21:12:35 CST 2018 Time's up!!!! Mon Oct 08 21:12:39 CST 2018 Time's up!!!!
若使用scheduleAtFixedRate,若执行延迟少于1s,则会多执行几次,补足由于延迟而未达到的执行次数。
ScheduledThreadPoolExecutor举例
执行结果如下:
Mon Oct 08 21:22:27 CST 2018 timerOne,the time:1064 Mon Oct 08 21:22:31 CST 2018 timerOne,the time:5066 Mon Oct 08 21:22:35 CST 2018 timerOne,the time:9066
同理scheduleWithFixedDelay执行原理和Timer的shedule方法一致。
Timer和 ScheduledThreadPoolExecutor选择
Timer的缺陷:
1. 单线程 2.若某一个任务有异常,则所有后续任务都不会再执行。
在生产环境建议使用ScheduledThreadPoolExecutor。当然使用spring框架的定时任务更加简单,原生的Java定时能帮助我们深化分析底层问题的能力。
若有什么建议或者不对的地方欢迎留言讨论。
猜你喜欢
- 2024-09-21 分布式定时任务调度框架实践(分布式定时任务解决方案)
- 2024-09-21 再见 Spring Task,这个定时任务框架真香
- 2024-09-21 学会这10种定时任务,有点飘了...
- 2024-09-21 硬核!最全的延迟任务实现方式汇总!附代码(强烈推荐)
- 2024-09-21 linux定时任务(linux定时任务清理日志)
- 2024-09-21 SpringBoot第十八篇:定时任务(Scheduling Tasks)
- 2024-09-21 Java | 一分钟掌握定时任务 | 3 - 单机定时之Timer
- 2024-09-21 探究 Spring 的定时任务配置(spring定时任务时间配置规则)
- 2024-09-21 如何实现定时任务- Java Timer/TimerTask 源码原理解析
- 2024-09-21 JAVA架构师之路-教你如何去实现一个分布式定时任务
你 发表评论:
欢迎- 最近发表
-
- class版本不兼容错误原因分析(class更新)
- 甲骨文Oracle公司为Java的最新LTS版本做出改进
- 「版本发布」Minecraft Java开发版 1.19.4-pre1 发布
- java svn版本管理工具(svn软件版本管理)
- 我的世界1.8.10钻石在第几层(我的世界1.7.2钻石在哪层)
- Java开发高手必备:在电脑上轻松切换多个JDK版本
- 2022 年 Java 开发报告:Java 8 八年不到,开发者都在用什么?
- 开发java项目,选择哪个版本的JDK比较合适?
- Java版本选型终极指南:8 vs 17 vs 21特性对决!大龄程序员踩坑总结
- POI Excel导入(poi excel导入附件)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)