公司需要做一个表单定时任务,定时器,能想到的有两个 java.util.Timer 和quartz
先看一下java.util.Timer。
一种线程设施,用于安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。
与每个 Timer
对象相对应的是单个后台线程,用于顺序地执行所有计时器任务。计时器任务应该迅速完成。如果完成某个计时器任务的时间太长,那么它会“独占”计时器的任务
执行线程。因此,这就可能延迟后续任务的执行,而这些任务就可能“堆在一起”,并且在上述令人讨厌的任务最终完成时才能够被快速连续地执行。
对 Timer
对象最后的引用完成后,并且
所有未处理的任务都已执行完成后,计时器的任务执行线程会正常终止(并且成为垃圾回收的对象)。但是这可能要很长时间后才发生。默认情况下,任务执行线程并不作为守护线程
来运行,所以它能够阻止应用程序终止。如果调用方想要快速终止计时器的任务执行线程,那么调用方应该调用计时器的 cancel
方法。
如果意外终止了计时器的任务执行线程,例如调用了它的 stop
方法,那么所有以后对该计时器安排任务的尝试都将导致 IllegalStateException
,就好像调用了计时器的 cancel
方法一样。
此类是线程安全的:多个线程可以共享单个 Timer
对象而无需进行外部同步。
此类不
提供实时保证:它使用 Object.wait(long)
方法来安排任务。
实现注意事项:此类可扩展到大量同时安排的任务(存在数千个都没有问题)。在内部,它使用二进制堆来表示其任务队列,所以安排任务的开销是 O(log n),其中 n 是同时安排的任务数。
更多细节请参考java api
它一个很大的缺点是:不够灵活。只能执行一次,或者定期重复执行。例如说:每周二执行,每隔两个执行,每三个月执行。他不能支持:每周二的周四和周五执行,偶数月的最后一个星期的周四执行等。
相对而言,quartz足够灵活:
Quartz是一个任务日程管理系统,“任务进度管理器”就是一个在预先确定(被纳入日程)的时间到达时,负责执行(或者通知)其他软件组件的系统。
quartz的任务日程安排相当灵活,任务在给定的触发器(Trigger)触发时执行。触发器可以通过几乎以下所有形式的组合方式进行创建:
- 在一天中的任意时刻(可以精确到毫秒)。
- 一周中特定的一些天。
- 一个月中特定的一些天。
- 一年中特定的一些天
- 不在日历列表中注册的一些天(比如节假日)。循环特定的次数。
- 循环到特定的时间。
- 无限循环。
- 按照一定的时间间隔循环。
分享到:
相关推荐
TIA博途中编写的定时器Timer为什么不工作?
C#定时器实现例子,包括三种实现方式System.Windows.Forms、System.Timers、System.Threading.Timer
Spring两种定时器实例配置:Java的TimerTask类和OpenSymphony的Quartz。包含5种配置方式:timer普通定时器、timer特定方法定时器、quartz简单定时器、quartz精确定时器、quartz特定方法定时器。简单实用,一看就会。
TIMER-1 : 定时器上溢。 TIMER-2 : 强置输出模式。 TIMER-3 : 输出比较模式。 TIMER-4 : PWM1模式。 TIMER-5 : 输入捕获模式(结果硬件仿真观察)。 TIMER-6 : PWM输入模式。 TIMER-7 : 单脉冲模式。 TIMER-8 : TIMER2...
IMER-1 : 定时器上溢。 TIMER-2 : 强置输出模式。 TIMER-3 : 输出比较模式。 TIMER-4 : PWM1模式。 TIMER-5 : 输入捕获模式(结果硬件仿真观察)。...TIMER-11: TIMER4的通道1同时出发TIMER4和TIMER3两个定时器。
java 定时器(Timer) java 定时器(Timer) java 定时器(Timer)
GD32F330 Timer定时器中断功能使用
TIMER-1 : 定时器上溢。 TIMER-2 : 强置输出模式。 TIMER-3 : 输出比较模式。 TIMER-4 : PWM1模式。 TIMER-5 : 输入捕获模式(结果硬件仿真观察)。 TIMER-6 : PWM输入模式。 TIMER-7 : 单脉冲模式。 TIMER-8 : TIMER2...
文章配套学习测试工程: 文章提供源码与工程,芯片型号MSP432P401R 在前些日子的学习里,我们深刻认识了具有强大功能的定时器A,这是一种广泛存在于各类现有 ...今日学习使用MSP432的另一个定时器: Timer_32 定时器~
TIMER-1 : 定时器上溢。 TIMER-2 : 强置输出模式。 TIMER-3 : 输出比较模式。 TIMER-4 : PWM1模式。 TIMER-5 : 输入捕获模式(结果硬件仿真观察)。 TIMER-6 : PWM输入模式。 TIMER-7 : 单脉冲模式。 TIMER-8 : TIMER2...
实现了spring配置比较流行的任务调度操作,java timer 和 quartz俩种方式 并且有注释描述。
VC++ 例子,一个程序中使用多个定时器(Timer)的例子
c8051f340 TIMER0定时器中断,通过定时器达到所需的功能
C#定时器(Timer)实现了随着时间的变化,代码自动运行,以改变界面顔色的方式表达定时器
STM32入门篇之通用定时器彻底研究 TIMER-1:定时器上溢,中断中取反LED TIMER-2:强置输出 TIMER-3:输出比较 TIMER-4:PWM输出 TIMER-7:单脉冲方式 ...TIMER-11: TIMER4的通道1同时出发TIMER4和TIMER3两个定时器
该文档经过本人详细整理,jdk Timer、spring quartz定时器的详细对比及代码实例,代码拷贝到程序中就可以运行,经过自己验证。
极简主义的25分钟定时器,简单易用。 1点击设置一个25分钟的计时器。 适用于番茄工作方法番茄计时器。 节省您的时间,提高您的效率吧! 从固定的25:00开始。 在0:00停止并通过弹出警报/通知通知您。 倒数时,再次...
:??:??:可将上面几个参数延迟??:??:??时间后执行 例如在命令行中输入:“timer /after:00:30:00 /shutdown”,就会在 启动定时器三十分钟后自动关闭计算机。 注:此功能受防止程序重复运行的限制。 ★扩展功能...
java定时器,timer类操作详解 java定时器,timer类操作详解
一个简单的毫秒定时器mstimer