有时候需要定时触发某一项任务。其实在jdk1.3,java sdk就通过java.util.Timer提供相应的功能。一个简单的例子说明如何使用,很简单:
1、第一步,我们需要建立一项任务,我们的任务需要继承java.util.TimerTask
package com.test;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimerTask;
public class TimeTask extends TimerTask {
@Override
public void run() {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月 HH:mm:ss");
System.out.println(sdf.format(new Date()));
}
}
2、我们需要启动我们的任务
package com.test;
import java.util.Timer;
/**
* @author dgl
*
*/
public class Say{
public static void main(String[] args) throws Exception {
Timer timer=new Timer();
timer.schedule(new TimeTask(), 1000, 3000);//注册此任务在第一次运行后的1秒钟时间执行,以后每隔3秒钟时间执行一次。
}
}
schedule(TimerTask task, long delay, long period)中task指定了需要执行的任务,delay指定在第一次运行任务后的多少毫秒执行此任务,period参数指定在以后的多少毫秒执行一次任务。
我们可以看到,很遗憾的是Timer只可以指定多久执行一次,并不能指定在具体那个时间点执行这项任务,比如说我们需要每天午夜1:00执行某一任务,而正是QuartZ调度器起作用的时候了。关于QuartZ的更多信息可以访问http://www.opensymphony.com/quartz/,下面让我们来看QuartZ是怎么工作的吧!
创建一项任务
public class Shedule {
//this class do daily task for message awoke and cycle task
public Shedule() {
}
public void say(){
//cycleTask();
messageAwoke();
}
}
package com.test.action;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
public class DailySay extends QuartzJobBean {
private Shedule sh ;
@Override
protected void executeInternal(JobExecutionContext arg0)
throws JobExecutionException {
sh.say();
}
public Shedule getSh() {
return sh;
}
public void setSh(Shedule sh) {
this.sh = sh;
}
}
我们使用Spring的注入容器注入Shedule;
2、调度cron任务
在Spring配置文件中
<bean id="task" class="com.test.action.Shedule">
<property name="hibernateSession" ref="hibernateSession"></property>
</bean>
<bean id="job" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="com.test.action.DailySay"></property>
<property name="jobDataAsMap">
<map>
<entry key="sh" value-ref="task"></entry>
</map>
</property>
</bean>
<bean id="report" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="job"></property>
<property name="cronExpression" value="0 0 1 * * ?"></property>
</bean>
3、启动任务
<bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="report"/>
</list>
</property>
</bean>
这样你将会完成每天凌晨1:00钟启动Shedule 任务的功能。
分享到:
相关推荐
该文档经过本人详细整理,jdk Timer、spring quartz定时器的详细对比及代码实例,代码拷贝到程序中就可以运行,经过自己验证。
源码 博文链接:https://zmx.iteye.com/blog/1479602
茴香豆的“茴”有几种写法? spring 整合 quartz|| ...我收集的:《spring定时Timer&Quartz》 代码示例,依赖spring2.x.jar quartz1.6.x.jar 相关介绍: http://blog.csdn.net/liu251/archive/2009/08/18/4459514.aspx
实现了spring配置比较流行的任务调度操作,java timer 和 quartz俩种方式 并且有注释描述。
完整示例,直接导入工程即可实现,欢迎各位下载,和评论,谢谢
使用spring实现定时任务,整合spring,springmvc,实现定时任务执行
Java关于时间调度的几种实现方(Timer TimerTask Quartz Spring)
NULL 博文链接:https://qh8.iteye.com/blog/2041195
Spring两种定时器实例配置:Java的TimerTask类和OpenSymphony的Quartz。包含5种配置方式:timer普通定时器、timer特定方法定时器、quartz简单定时器、quartz精确定时器、quartz特定方法定时器。简单实用,一看就会。
这个资源中,是我对spring与quartz进行的整合,为了方便以后的使用,以及本着好东西大家分享的原则,在此就上传了,希望各位能提出宝贵的意见或建议,共同进步,谢谢
在JavaEE系统中,我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等...使用Quartz框架无疑是非常好的选择,并且与Spring可以非常方便的集成,下面介绍它们集成方法和Cron表达式的详细介绍。
spring+quartz demo 源码送上很好用,下载之后就可以运行,例子很好看懂的,里面还有timer定时器的一些佩法
NULL 博文链接:https://675990021.iteye.com/blog/2265945
我在博客写了timer和quartz的笔记 附上了全部代码 有兴趣的可以去看博客参照这个代码
自己写的vb net定时小程序程序 可以定时关机 定时重启 定时锁定计算机 定时休眠 定时运行程序 也可以运行mp3 doc 等程序 支持多语言 支持密码保护 支持两种定时模式 支持暂停 支持缩小托盘 无需安装 下载即用 ...
Spring使用timer定时器-能精确几点运行定时任务的小demo
C语言02-Timer0-Timer1-Timer2-Timer3-Timer4测试程序(STC32G-DEMO-CODE-220311kw)C语言02-Timer0-Timer1-Timer2-Timer3-Timer4测试程序(STC32G-DEMO-CODE-220311kw)C语言02-Timer0-Timer1-Timer2-Timer3-Timer4...
quartz和Timer的demo中没有用框架,很简单的例子,主要用于测试用的...
quartz-1.8.4 定时调度 timer quartz.jar
spring定时器Spring定时器的两种实现方式Java的Timer类和OpenSymphony的Quartz。