本文对比分析了Java内置的Timer和开源的Quartz定时任务库。Timer单线程执行,任务间相互影响,而Quartz支持多线程,异常处理更灵活,调度更精确。Quartz通过Cron表达式实现复杂调度,适用于大型项目,且商业使用无授权问题。
摘要生成于
,由 DeepSeek-R1 满血版支持,
Timer实现定时任务调度需要Timer和TimerTask两个组件,使用时,继承TimerTask抽象类,实现run方法,由Timer进行调度,实现单次执行或以固定间隔执行。
Quartz由三个主要组件组成:调度器Scheduler,触发器Trigger,任务Job,使用时,继承实现job接口,创建对应的JobDetail对象,创建Trigger对象,设置触发时间,交由Scheduler进行调度。
Quartz使用Apache 2 License进行授权,可以商用,不存在授权方面的问题
Quartz框架被广泛使用在各类项目中,经过了长期迭代,稳定性具有一定保障
工作量上使用Quartz进行任务调度不会产生很大的代码量且不会有过于复杂的逻辑,熟悉Quartz框架的话预计可以在1到2天内完成开发
Timer
和
Quartz
的区别
1、
Timer
是
java
.util包自带的
定时
器,
quartz
是一个第三方提供的
定时
器
2、
Timer
的任务是通过创建
Timer
Task子类进行实现,
quartz
则必须要新建一个class文件实现Job接口重写execute方法定义任务
3、
Timer
只能控制执行的周期及开始时间,而
quartz
可以灵活、准确的控制日期节点以及执行次数
常见的
定时
器分两大块:
1、
Timer
在
java
.util包中提供的
定时
器
2、
quartz
第三方提供的
定时
器就像
1)精确度
和
功能
Quartz
可以通过
cron
表达式精确到特
定时
间执行,而
Timer
Task不能。
Quartz
拥有
Timer
Task所有的功能,而
Timer
Task则没有。
2)任务类的数量
Timer
Task
和
Quartz
每次执行任务时,每次调用的是不是都是同一个任务类对象,还是每次都不一样?现在做如下实验,每次执行任务时,将任
1:
Quartz
:Spring配置文件:<!-- 配置触发器 -->
<!-- 配置JOB类 -->
<bean id="schedulers" class="com.
java
.activiti.scheduler.schedulers"></bean>
<!-- 配置JobDetail -->
<bean
[size=medium]这是学习
定时
器找到的第二篇文章
地址:http://blog.csdn.net/zlxdream815/article/details/8177574
timer
定时
器。(这个比较简单,
timer
是
java
.util包下一个类)
为了更好的了解,写了如下例子
[/size]
[code="
java
"]public class MyTask extends T...
这近闲暇无事,研究
定时
器
timer
和
Quartz
。也在网上看了一些例子,大多数要不是讲得很笼统就是就得很深奥。仔细想来
定时
器不就是相当于
定时
触发的装置,这样想来理解就更容易了。
第一个例子。
timer
定时
器。(这个比较简单,
timer
是
java
.util包下一个类)
为了更好的了解,我写了两个
定时
器类,很被集成
Timer
Task。
public class MyTask extends Ti
三十一.
定时
器
定时
器跟闹钟的功能类似,可以定义一个时间来运行一段程序,比如实时的数据检测 或者是网上各种网站视频会员都是用计时器来提醒用户。
常见的
定时
器有
java
.util包提供的
Timer
定时
器
和
第三方提供的quzrtz
定时
器
Timer
定时
器
和
quartz
定时
器的区别
1、
Timer
是
java
.util包自带的
定时
器,
quartz
是一个第三方提供的
定时
器
2、
Timer
的任务是通过创建
Timer
Task子类进行实现,
quartz
则必须要新建一个class文件实现Job接口重写execut
1.单线程的
定时
器存在很多问题,
定时
器只是
定时
把消息WM_
TIMER
访到线程的消息队列里,但并不保证消息会立即被响应,如果碰巧系统比较忙,消息可能会在队列里放一段时间才被响应,这样会造成本来应该间隔一段时间发生的消息连续发生了。
2. 。NET FrameWork带来了新的解决方案
Server
Timer
s
System.
Timer
s.
Timer
基于服务器的计时器,位于"工...
北京某高校可用的电话号码有以下几类,校内电话号码由4位数字组成,第1位数字不是0,校外电话又分为本市电话和外地电话两类,拨校外电话需先拨0,若是本市电话则再接着拨8位数字(第1位不是0)
17617