定时执行任务quartz用法
来源:互联网 发布:阿里云服务器配置教程 编辑:程序博客网 时间:2024/04/30 22:36
定时执行某个或者某些任务的需求是常有发生,要解决此问题总共有两种方法,一种是通过开源的quartz框架完成,此框架由Java语言编写;另一种就是Java自带的定时器Timer。在本篇文章中我们将介绍quartz框架的使用方法。
操作步骤:
1、编写一个实现接口org.quartz.job的类,此接口中只有一个方法execute:
import org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;public class BackupDatabaseQuartzJob implements Job { @Overridepublic void execute(JobExecutionContext arg0) throws JobExecutionException {// TODO Auto-generated method stub System.out.println("开始执行备份数据操作");}}
2、编写一个调度器,通过那个调度器来执行此任务。关于调度器,quartz总共分为两种——
CronTrigger和
SimpleTrigger。
import org.quartz.CronExpression;import org.quartz.CronTrigger;import org.quartz.JobDetail;import org.quartz.Scheduler;import org.quartz.SchedulerException;import org.quartz.SchedulerFactory;import org.quartz.impl.StdSchedulerFactory;public class BackupDatabaseScheduler {/*** 调度任务* * @throws SchedulerException void*/public void task() throws SchedulerException {// 实例化一个调度器工厂SchedulerFactory schedulerFactory = new StdSchedulerFactory();// 创建 一个 调度器Scheduler scheduler = schedulerFactory.getScheduler();// 此三个参数是必传的JobDetail jobDetail = new JobDetail("jobDetailName", "jobDetailGroup",BackupDatabaseQuartzJob.class);CronTrigger cronTrigger = new CronTrigger("cronTrigger","cronTriggerGroup");try {// 参数共七个:秒、分、时、月内日期、月、周内日期、年(可选)CronExpression cexp = new CronExpression("0 0 0 * * ?");cronTrigger.setCronExpression(cexp);} catch (Exception e) {e.printStackTrace();}scheduler.scheduleJob(jobDetail, cronTrigger);scheduler.start();}public static void main(String args[]) {try {BackupDatabaseScheduler qRunner = new BackupDatabaseScheduler();qRunner.task();} catch (Exception e) {e.printStackTrace();}}}
分析类和方法:
1、JobDetail
JobDetail是用来包装Job实例的具体细节的。Job以class的方式传入JobDetail,quartz会自动实例化Job类的。同时需要规定job的name和group,在jobdetail的validate()下,一个job是必须有name和group属性,并且二者组合标示唯一的job。JobDetail中的一些重要数据存放在JobDataMap中,这个map可以用来在控制程序和job内传递需要传递的参数。
JobDetail还有三个重要的boolean值的属性,分别是durability、volatility、shouldRecover。这三个属性默认是false,主要在数据库操作的时候起作用。
2、CronExpression
用来设置调度的时间,就如注释上说的那样,总共有七个参数,最后一个是可选的,因此,当不涉及到年的时候你可以只写留个参数,这样讲应该很清楚了吧。可能比较头疼的是不知道里面的特殊字符是啥意思,呵呵,接下来我们就来讲讲此定时器里面的特殊字符:
Cron 触发器利用一系列特殊字符,如下所示:
反斜线(/)字符表示增量值。例如,在秒字段中“5/15”代表从第 5 秒开始,每 15 秒一次。
问号(?)字符和字母 L 字符只有在月内日期和周内日期字段中可用。问号表示这个字段不包含具体值。所以,如果指定月内日期,可以在周内日期字段中插入“?”,表示周内日期值无关紧要。字母 L 字符是 last 的缩写。放在月内日期字段中,表示安排在当月最后一天执行。在周内日期字段中,如果“L”单独存在,就等于“7”,否则代表当月内周内日期的最后一个实例。所以“0L”表示安排在当月的最后一个星期日执行。
在月内日期字段中的字母(W)字符把执行安排在最靠近指定值的工作日。把“1W”放在月内日期字段中,表示把执行安排在当月的第一个工作日内。
井号(#)字符为给定月份指定具体的工作日实例。把“MON#2”放在周内日期字段中,表示把任务安排在当月的第二个星期一。
星号(*)字符是通配字符,表示该字段可以接受任何可能的值。
如:
---、 代码中的时间表示每天的零点进行任务调度;
---、 0 15 10 ? * MON-FRI:将在星期一到星期五的每天上午10点15分执行一个作业。
---、 0 15 10 ? * 6L 2002-2005:将在2002年到2005年的每个月的最后一个星期五上午10点15分执行作业。
4、rescheduleJob:可以实现如每天、每周、每月的重复操作
- 定时执行任务quartz用法
- spring quartz定时执行任务
- 定时执行任务之quartz
- spring quartz 定时执行任务
- quartz 定时任务 执行两次
- Spring定时任务(Quartz)用法
- Quartz任务调度、手动执行定时任务
- 使用Spring Quartz执行定时任务
- spring+quartz定时任务执行两次
- 用Quartz处理定时执行的任务
- 利用Quartz实现定时执行任务
- 用Quartz处理定时执行的任务
- spring定时任务quartz执行两次
- 用Quartz处理定时执行的任务
- 用Quartz处理定时执行的任务
- 用Quartz处理定时执行的任务
- springmvc quartz定时任务执行2次
- 用Quartz处理定时执行的任务
- Class_Segmentation_and_Object_Localization_with_Superpixel_Neighborhoods
- smarty_foreach的数组遍历
- ibatis的搭建与简单实现
- JSP脚本片断
- C++xml文件操作 CMarkup学习方法说明
- 定时执行任务quartz用法
- MFC中获取各种类指针的方法
- C++内存分配
- 图片自动适应大小
- 搜索引擎的那些事(开篇)
- linux内核调试环境搭建-1 Ubuntu10 .10下编译安装qemu
- algo3-3-10.c Hanoi塔问题 (没仔细看)
- linux家目录下各默认目录的定义,如桌面,模板,音乐,公共,视频,文档,下载,图片等
- Cortex-M0指令集