使用quarz的spring4.1.7完整jar包包

雪飘七月 的BLOG
用户名:雪飘七月
文章数:64
评论数:23
访问量:142776
注册日期:
阅读量:5863
阅读量:12276
阅读量:403758
阅读量:1092885
51CTO推荐博文
一、什么是定时器
&&&&&&& 定时器的用途方方面面,早上叫我们起床的闹钟,洗衣机、微波炉、电视机、空调都有定时设置。
&&&&&&& 而定时器一般可以分为两个部分:触发装置和触发事件。而触发装置中又有对时间的控制。
二、我们的软件定时器
&&&&&&& 在java中,我们的软件定时器也是分为这两个部分。
&&&&&& 采用quartz实现触发器时,首先是通过一个Scheduler来对触发器及出发事件的控制。触发器中含有触发开始时间、触发结束时间、触发次数和触发周期的参数调用方法来对以上属性进行控制。而触发事件是通过继承Job接口的方式实现,最后在触发时自动调用触发事件。
三、java定时器实例解析
首先,我的工程调用了一下三个jar包
quartz-all-1.6.1.jar
定时器核心类
commons-collections.jar
commons-logging-1.0.4.jar
&以下实例是启动后三秒开始执行第一次,每隔10秒
定时器测试类
&&&&&&public&class&Test&{ &&&&&&public&static&void&main(String[]&args){ &&&&&&&&&InitScheduler.init(); &&&&&} &}&
时间管理类Scheduler
&&&&&&public&class&InitScheduler&{ &&&&&&private&static&Scheduler&sched&=&null;; &&&&& &&&&&public&static&void&init(){ &&&&&&&&&try&{ &&&&&&&&&&&&&&&&&&&&&&&&&&sched&=&(new&StdSchedulerFactory()).getScheduler(); &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&JobDetail&jobDetail&=&new&JobDetail(&myjob&, &&&&&&&&&&&&&&&&&&&&&&groupsimpletrigger&,&MyJob.class); &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&SimpleTrigger&simpletrigger&=&new&SimpleTrigger( &&&&&&&&&&&&&&&&&&&&&&simpletrigger&,& &&&&&&&&&&&&&&&&&&&&&&groupsimpletrigger&,& &&&&&&&&&&&&&&&&&&&&&new&Date(System.currentTimeMillis()&+&3000), &&&&&&&&&&&&&&&&&&&&&null, &&&&&&&&&&&&&&&&&&&&&SimpleTrigger.REPEAT_INDEFINITELY,& &&&&&&&&&&&&&&&&&&&&&10L&*&1000L); &&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&sched.scheduleJob(jobDetail,&simpletrigger); &&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&sched.start(); &&&&&&&&&}&catch&(SchedulerException&e)&{ &&&&&&&&&&&&&&&&&&&&&&&&&&e.printStackTrace(); &&&&&&&&&} &&&&&} &}&
继承了Job接口的任务类
&&&&&&public&class&MyJob&implements&Job{ &&&&&&&&&&&@Override&&&&&public&void&execute(JobExecutionContext&arg0)&throws&JobExecutionException&{ &&&&&&&&&&&&&&&&&&&&&&&&&&&System.out.println(&执行myjob时间:&+&new&Date()); &&&&&} &}&
&本文出自 “” 博客,请务必保留此出处
了这篇文章
附件下载:  
类别:┆阅读(0)┆评论(0)
请输入验证码:查看:8865|回复:7
最近项目中 有一个功能 每次执行 都要生成临时文件 完成后都要删除一次 这样IO操作 很频繁
所以 研究了一下定时任务 设定为每天凌晨2点执行一次 删除操作 这样大大 降低了IO的频繁操作。第一步测试 执行main 方法 载入配置文件
import org.springframework.context.ApplicationC
import org.springframework.context.support.ClassPathXmlApplicationC
public class QuartzAction {
& && && &public void work(){
& && && && && &&&//如果想定时删除 项目中的文件可以 使用此方法 项目启动会自动加载
//& && && && && &&&ServletContext context = ContextLoader.getCurrentWebApplicationContext().getServletContext();
//& && && && & String pathCache = context.getRealPath(Constants.PATH_CACHE);
& && && && & System.out.println(&Quartz的任务调度删除临时文件开始!!!&);
& && && && & System.out.println(&Quartz的任务调度删除临时文件结束!!!&);
& && && &}
& && && &/**
& && && & * 测试方法
& && && & * @param args
& && && & */
& && && &public static void main(String[] args) {
& && && && && &&&ApplicationContext ctx = new ClassPathXmlApplicationContext(&applicationContext.xml&);
& && && &}
(159.15 KB)
成功执行定时删除操作
(93.07 KB)
相关配置文件&&
源代码下载地址
百度网盘下载地址 ;uk=
本帖最后由 海岸无眠 于
13:06 编辑
不错,感谢分享~
小洋(on my way)
不错 你还可以尝试写下多schedule的,我老早以前玩过,再设置复杂点,每周几的几点几点段执行。
51CTOjava板块讨论QQ群:【1000人群】2群:【可加】 & && && &欢迎热爱JAVA的来讨论^_^
我的个人网站--&
引用:原帖由 shyy8712872 于
16:44 发表
不错 你还可以尝试写下多schedule的,我老早以前玩过,再设置复杂点,每周几的几点几点段执行。 暂时 没有 需求 版主的网站 。。。。
初级工程师
引用:原帖由 yuke198907 于
15:51 发表
感谢分享,以前用定时一直用的是timer,以后有机会用这个试试 表示看不懂
本帖最后由 yuke198907 于
13:46 编辑
不错,思路还可以
他的资源大家看看这个结果是什么啊??
楼主给个jar包吧2009年11月 Java大版内专家分月排行榜第三
2010年2月 Java大版内专家分月排行榜第二
2011年7月 Java大版内专家分月排行榜第三2010年1月 Java大版内专家分月排行榜第三2009年12月 Java大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。12861人阅读
JAVA WEB开发(56)
任务调度在目前的JAVA应用程序中运用的十分普遍,故掌握QUARTZ是必备的技能
闲话少说,上官网:&下载最新1.80资源包
commons-logging log4j sff4j 等jar包要添加进去,quartz的jar包则肯定必须
&首先写一个类实现Job接口
public class QuartzDemo implements Job{
public void execute(JobExecutionContext arg0) throws JobExecutionException {
System.out.println(&执行我.......&);
public class Test {
private static final SimpleTrigger CronTrigger =
public static void main(String[] args){
public void test1(){
//通过SchedulerFactory来获取一个调度器
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
scheduler = schedulerFactory.getScheduler();
//引进作业程序
JobDetail jobDetail =
new JobDetail(&jobDetail-s1&, &jobDetailGroup-s1&, QuartzDemo.class);
//new一个触发器
SimpleTrigger simpleTrigger =
new SimpleTrigger(&simpleTrigger&, &triggerGroup-s1&);
//设置作业启动时间
long ctime = System.currentTimeMillis();
simpleTrigger.setStartTime(new Date(ctime));
//设置作业执行间隔
simpleTrigger.setRepeatInterval(1000);
//设置作业执行次数
simpleTrigger.setRepeatCount(10);
//设置作业执行优先级默认为5
//simpleTrigger.setPriority(10);
//作业和触发器设置到调度器中
scheduler.scheduleJob(jobDetail, simpleTrigger);
//启动调度器
scheduler.start();
} catch (SchedulerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
public void test2(){
SchedulerFactory schedFact
org.quartz.impl.StdSchedulerFactory();
Scheduler sched
schedFact.getScheduler();
sched.start();
JobDetail jobDetail
JobDetail( & Income Report & ,
& Report Generation & , QuartzDemo.class );
jobDetail.getJobDataMap().put( & type & ,
& FULL & );
CronTrigger trigger
CronTrigger( & Income Report & ,
& Report Generation & );
每1分钟执行一次
trigger.setCronExpression( &0 33 16 * * ?& );
sched.scheduleJob(jobDetail, trigger);
(Exception e)
e.printStackTrace();
public void test3(){
//通过SchedulerFactory来获取一个调度器
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
scheduler = schedulerFactory.getScheduler();
//引进作业程序
JobDetail jobDetail =
new JobDetail(&jobDetail-s1&, &jobDetailGroup-s1&, QuartzDemo.class);
//new一个触发器
CronTrigger simpleTrigger =
new CronTrigger(&trigger&, &group&, &job&, &group&, &16 26/1 8-17 * * ?&);
// new SimpleTrigger(&simpleTrigger&, &triggerGroup-s1&);
//设置作业启动时间
//Calendar excelCal = Calendar.getInstance();
//excelCal.add(Calendar.DAY_OF_MONTH, 1);
///excelCal.set(Calendar.HOUR_OF_DAY, 16);
//excelCal.set(Calendar.SECOND, 0);
//excelCal.add(Calendar.MINUTE, 9);
// long ctime = System.currentTimeMillis();
// simpleTrigger.setStartTime(excelCal.getTime());
//设置作业执行间隔
// simpleTrigger.setRepeatInterval(1000);
//设置作业执行次数
// simpleTrigger.setRepeatCount(10);
//设置作业执行优先级默认为5
//simpleTrigger.setPriority(10);
//作业和触发器设置到调度器中
scheduler.scheduleJob(jobDetail, simpleTrigger);
//启动调度器
scheduler.start();
} catch (SchedulerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
需要注意的几点是经常会出现org.quartz.core.ErrorLogger : An error occured instantiating job to be executed.....这种异常,解决办法是
1)Job类必须有默认的无参构造方法,当然不覆盖的话类本身就是无参的构造方法
2)Job的scope必须是Public类型的,因为quartz根据反射机制实例化类,如果不是public的,无法对其暴露
Job类不能是内部类,原因同上,所以最好单独建类
后附加上我网上搜集的
Quartz的配置文件:quartz.properties
# Configure Main Scheduler Properties
org.quartz.scheduler.instanceName = TestScheduler
org.quartz.scheduler.instanceId = one
# Configure ThreadPool
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount =
org.quartz.threadPool.threadPriority = 4
# Configure JobStore
org.quartz.jobStore.misfireThreshold = 5000
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
附:cronExpression配置说明
允许的特殊字符
, - * ? / L W C
1-12 或者 JAN-DEC
1-7 或者 SUN-SAT
, - * ? / L C #
年(可选)
&0 0 12 * * ?&
每天中午12点触发
&0 15 10 ? * *&
每天上午10:15触发
&0 15 10 * * ?&
每天上午10:15触发
&0 15 10 * * ? *&
每天上午10:15触发
&0 15 10 * * ? 2005&
2005年的每天上午10:15触发
&0 * 14 * * ?&
在每天下午2点到下午2:59期间的每1分钟触发
&0 0/5 14 * * ?&
在每天下午2点到下午2:55期间的每5分钟触发
&0 0/5 14,18 * * ?&
在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
&0 0-5 14 * * ?&
在每天下午2点到下午2:05期间的每1分钟触发
&0 10,44 14 ? 3 WED&
每年三月的星期三的下午2:10和2:44触发
&0 15 10 ? * MON-FRI&
周一至周五的上午10:15触发
&0 15 10 15 * ?&
每月15日上午10:15触发
&0 15 10 L * ?&
每月最后一日的上午10:15触发
&0 15 10 ? * 6L&
每月的最后一个星期五上午10:15触发
&0 15 10 ? * 6L &
2002年至2005年的每月的最后一个星期五上午10:15触发
&0 15 10 ? * 6#3&
每月的第三个星期五上午10:15触发
表示所有值;
表示未说明的值,即不关心它为何值;
表示一个指定的范围;
表示附加一个可能值;
符号前表示开始时间,符号后表示每次递增的值;
(&last&) &L& 用在day-of-month字段意思是 &这个月最后一天&;用在 day-of-week字段, 它简单意思是 &7& or &SAT&。 如果在day-of-week字段里和数字联合使用,它的意思就是 &这个月的最后一个星期几& – 例如: &6L& means &这个月的最后一个星期五&. 当我们用“L”时,不指明一个列表值或者范围是很重要的,不然的话,我们会得到一些意想不到的结果。
W(&weekday&)
只能用在day-of-month字段。用来描叙最接近指定天的工作日(周一到周五)。例如:在day-of-month字段用“15W”指“最接近这个月第15天的工作日”,即如果这个月第15天是周六,那么触发器将会在这个月第14天即周五触发;如果这个月第15天是周日,那么触发器将会在这个月第16天即周一触发;如果这个月第15天是周二,那么就在触发器这天触发。注意一点:这个用法只会在当前月计算值,不会越过当前月。“W”字符仅能在day-of-month指明一天,不能是一个范围或列表。也可以用“LW”来指定这个月的最后一个工作日。
只能用在day-of-week字段。用来指定这个月的第几个周几。例:在day-of-week字段用&6#3&指这个月第3个周五(6指周五,3指第3个)。如果指定的日期不存在,触发器就不会触发。
指和calendar联系后计算过的值。例:在day-of-month 字段用“5C”指在这个月第5天或之后包括calendar的第一天;在day-of-week字段用“1C”指在这周日或之后包括calendar的第一天
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1273961次
积分:9336
积分:9336
排名:第1622名
原创:105篇
转载:100篇
评论:261条
名称: 评论:条
(6)(1)(2)(1)(2)(2)(1)(3)(9)(2)(3)(2)(3)(1)(1)(5)(4)(3)(1)(1)(5)(1)(7)(3)(10)(4)(11)(5)(16)(24)(22)(6)(38)
名称: 评论:条&>&&>&&>&&>&使用quartz需要的jar包
使用quartz需要的jar包
上传大小:921KB
使用quartz需要的jar包
综合评分:0(0位用户评分)
所需积分:0
下载次数:32
审核通过送C币
创建者:id_rin
创建者:qq_
创建者:qq_
课程推荐相关知识库
上传者其他资源上传者专辑
开发技术热门标签
VIP会员动态
android服务器底层网络模块的设计方法
所需积分:0
剩余积分:720
您当前C币:0
可兑换下载积分:0
兑换下载分:
兑换失败,您当前C币不够,请先充值C币
消耗C币:0
你当前的下载分为234。
使用quartz需要的jar包
会员到期时间:
剩余下载次数:
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
i__am__sai
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:}

我要回帖

更多关于 maven的jar包不完整 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信