Quartz使用-入门使用(java定时任务实现) 转

本文介绍如何使用Quartz 1.6.5版本实现定时任务的添加、修改和删除操作。通过示例代码展示了如何创建一个简单的定时任务,并提供了必要的第三方包列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注:这里使用的是Quartz1.6.5版本(包:quartz-1.6.5.jar)


[java] view plaincopyprint?
//测试main函数
//QuartzTest.java
package quartzPackage;
import java.text.SimpleDateFormat;
import java.util.Date;
public class QuartzTest {
/** *//**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SimpleDateFormat DateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
Date d = new Date();
String returnstr = DateFormat.format(d);
TestJob job = new TestJob();
String job_name ="11";
try {
System.out.println(returnstr+ "【系统启动】");
QuartzManager.addJob(job_name,job,"0/2 * * * * ?"); //每2秒钟执行一次
// Thread.sleep(10000);
// System.out.println("【修改时间】");
// QuartzManager.modifyJobTime(job_name,"0/10 * * * * ?");
// Thread.sleep(20000);
// System.out.println("【移除定时】");
// QuartzManager.removeJob(job_name);
// Thread.sleep(10000);
//
// System.out.println("/n【添加定时任务】");
// QuartzManager.addJob(job_name,job,"0/5 * * * * ?");
} catch (Exception e) {
e.printStackTrace();
}
}
}
//测试main函数 //QuartzTest.java package quartzPackage; import java.text.SimpleDateFormat; import java.util.Date; public class QuartzTest { /** *//** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub SimpleDateFormat DateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); Date d = new Date(); String returnstr = DateFormat.format(d); TestJob job = new TestJob(); String job_name ="11"; try { System.out.println(returnstr+ "【系统启动】"); QuartzManager.addJob(job_name,job,"0/2 * * * * ?"); //每2秒钟执行一次 // Thread.sleep(10000); // System.out.println("【修改时间】"); // QuartzManager.modifyJobTime(job_name,"0/10 * * * * ?"); // Thread.sleep(20000); // System.out.println("【移除定时】"); // QuartzManager.removeJob(job_name); // Thread.sleep(10000); // // System.out.println("/n【添加定时任务】"); // QuartzManager.addJob(job_name,job,"0/5 * * * * ?"); } catch (Exception e) { e.printStackTrace(); } } }
简单的任务管理类
[java] view plaincopyprint?
//简单的任务管理类
//QuartzManager.java
package quartzPackage;
import java.text.ParseException;
import org.quartz.CronTrigger;
import org.quartz.Job;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;
/** *//**
* @Title:Quartz管理类
*
* @Description:
*
* @Copyright:
* @author zz 2008-10-8 14:19:01
* @version 1.00.000
*
*/
public class QuartzManager {
private static SchedulerFactory sf = new StdSchedulerFactory();
private static String JOB_GROUP_NAME = "group1";
private static String TRIGGER_GROUP_NAME = "trigger1";
/** *//**
* 添加一个定时任务,使用默认的任务组名,触发器名,触发器组名
* @param jobName 任务名
* @param job 任务
* @param time 时间设置,参考quartz说明文档
* @throws SchedulerException
* @throws ParseException
*/
public static void addJob(String jobName,Job job,String time)
throws SchedulerException, ParseException{
Scheduler sched = sf.getScheduler();
JobDetail jobDetail = new JobDetail(jobName, JOB_GROUP_NAME, job.getClass());//任务名,任务组,任务执行类
//触发器
CronTrigger trigger =
new CronTrigger(jobName, TRIGGER_GROUP_NAME);//触发器名,触发器组
trigger.setCronExpression(time);//触发器时间设定
sched.scheduleJob(jobDetail,trigger);
//启动
if(!sched.isShutdown())
sched.start();
}
/** *//**
* 添加一个定时任务
* @param jobName 任务名
* @param jobGroupName 任务组名
* @param triggerName 触发器名
* @param triggerGroupName 触发器组名
* @param job 任务
* @param time 时间设置,参考quartz说明文档
* @throws SchedulerException
* @throws ParseException
*/
public static void addJob(String jobName,String jobGroupName,
String triggerName,String triggerGroupName,
Job job,String time)
throws SchedulerException, ParseException{
Scheduler sched = sf.getScheduler();
JobDetail jobDetail = new JobDetail(jobName, jobGroupName, job.getClass());//任务名,任务组,任务执行类
//触发器
CronTrigger trigger =
new CronTrigger(triggerName, triggerGroupName);//触发器名,触发器组
trigger.setCronExpression(time);//触发器时间设定
sched.scheduleJob(jobDetail,trigger);
if(!sched.isShutdown())
sched.start();
}
/** *//**
* 修改一个任务的触发时间(使用默认的任务组名,触发器名,触发器组名)
* @param jobName
* @param time
* @throws SchedulerException
* @throws ParseException
*/
public static void modifyJobTime(String jobName,String time)
throws SchedulerException, ParseException{
Scheduler sched = sf.getScheduler();
Trigger trigger = sched.getTrigger(jobName,TRIGGER_GROUP_NAME);
if(trigger != null){
CronTrigger ct = (CronTrigger)trigger;
ct.setCronExpression(time);
sched.resumeTrigger(jobName,TRIGGER_GROUP_NAME);
}
}
/** *//**
* 修改一个任务的触发时间
* @param triggerName
* @param triggerGroupName
* @param time
* @throws SchedulerException
* @throws ParseException
*/
public static void modifyJobTime(String triggerName,String triggerGroupName,
String time)
throws SchedulerException, ParseException{
Scheduler sched = sf.getScheduler();
Trigger trigger = sched.getTrigger(triggerName,triggerGroupName);
if(trigger != null){
CronTrigger ct = (CronTrigger)trigger;
//修改时间
ct.setCronExpression(time);
//重启触发器
sched.resumeTrigger(triggerName,triggerGroupName);
}
}
/** *//**
* 移除一个任务(使用默认的任务组名,触发器名,触发器组名)
* @param jobName
* @throws SchedulerException
*/
public static void removeJob(String jobName)
throws SchedulerException{
Scheduler sched = sf.getScheduler();
sched.pauseTrigger(jobName,TRIGGER_GROUP_NAME);//停止触发器
sched.unscheduleJob(jobName,TRIGGER_GROUP_NAME);//移除触发器
sched.deleteJob(jobName,JOB_GROUP_NAME);//删除任务
}
/** *//**
* 移除一个任务
* @param jobName
* @param jobGroupName
* @param triggerName
* @param triggerGroupName
* @throws SchedulerException
*/
public static void removeJob(String jobName,String jobGroupName,
String triggerName,String triggerGroupName)
throws SchedulerException{
Scheduler sched = sf.getScheduler();
sched.pauseTrigger(triggerName,triggerGroupName);//停止触发器
sched.unscheduleJob(triggerName,triggerGroupName);//移除触发器
sched.deleteJob(jobName,jobGroupName);//删除任务
}
}
//简单的任务管理类

//QuartzManager.java

package quartzPackage;

import java.text.ParseException;

 import org.quartz.CronTrigger;

 import org.quartz.Job;

import org.quartz.JobDetail;

import org.quartz.Scheduler;

import org.quartz.SchedulerException;

 import org.quartz.SchedulerFactory;

 import org.quartz.Trigger;

 import org.quartz.impl.StdSchedulerFactory;

 /** *//** * @Title:Quartz管理类 * * @Description: * * @Copyright: * @author zz 2008-10-8 14:19:01 * @version 1.00.000 * */

 public class QuartzManager {

private static SchedulerFactory sf = new StdSchedulerFactory();

 private static String JOB_GROUP_NAME = "group1";

 private static String TRIGGER_GROUP_NAME = "trigger1";

 /** *//** * 添加一个定时任务,使用默认的任务组名,触发器名,触发器组名 * @param jobName 任务名 * @param job 任务 * @param time 时间设置,参考quartz说明文档 * @throws SchedulerException * @throws ParseException */

public static void addJob(String jobName,Job job,String time) throws SchedulerException, ParseException{

 Scheduler sched = sf.getScheduler();

JobDetail jobDetail = new JobDetail(jobName, JOB_GROUP_NAME, job.getClass());//任务名,任务组,任务执行类 //触发器 CronTrigger trigger = new CronTrigger(jobName, TRIGGER_GROUP_NAME);//触发器名,触发器组

trigger.setCronExpression(time);//触发器时间设定

sched.scheduleJob(jobDetail,trigger); //启动

 if(!sched.isShutdown()) sched.start(); } /** *//** * 添加一个定时任务 * @param jobName 任务名 * @param jobGroupName 任务组名 * @param triggerName 触发器名 * @param triggerGroupName 触发器组名 * @param job 任务 * @param time 时间设置,参考quartz说明文档 * @throws SchedulerException * @throws ParseException */

 public static void addJob(String jobName,String jobGroupName, String triggerName,String triggerGroupName, Job job,String time) throws SchedulerException, ParseException{

Scheduler sched = sf.getScheduler();

JobDetail jobDetail = new JobDetail(jobName, jobGroupName, job.getClass());//任务名,任务组,任务执行类 //触发器 CronTrigger trigger = new CronTrigger(triggerName, triggerGroupName);//触发器名,触发器组 trigger.setCronExpression(time);//触发器时间设定 sched.scheduleJob(jobDetail,trigger); if(!sched.isShutdown()) sched.start(); }

 /** *//** * 修改一个任务的触发时间(使用默认的任务组名,触发器名,触发器组名) * @param jobName * @param time * @throws SchedulerException * @throws ParseException */

 public static void modifyJobTime(String jobName,String time) throws SchedulerException, ParseException{

 Scheduler sched = sf.getScheduler();

Trigger trigger = sched.getTrigger(jobName,TRIGGER_GROUP_NAME);

 if(trigger != null){ CronTrigger ct = (CronTrigger)trigger;

ct.setCronExpression(time);

sched.resumeTrigger(jobName,TRIGGER_GROUP_NAME);

 }

} /** *//** * 修改一个任务的触发时间 * @param triggerName * @param triggerGroupName * @param time * @throws SchedulerException * @throws ParseException */

public static void modifyJobTime(String triggerName,String triggerGroupName, String time) throws SchedulerException, ParseException{ Scheduler sched = sf.getScheduler();

Trigger trigger = sched.getTrigger(triggerName,triggerGroupName);

if(trigger != null){ CronTrigger ct = (CronTrigger)trigger; //修改时间 ct.setCronExpression(time); //重启触发器 sched.resumeTrigger(triggerName,triggerGroupName);

}

 } /** *//** * 移除一个任务(使用默认的任务组名,触发器名,触发器组名) * @param jobName * @throws SchedulerException */ public static void removeJob(String jobName) throws SchedulerException{

Scheduler sched = sf.getScheduler();

sched.pauseTrigger(jobName,TRIGGER_GROUP_NAME);//停止触发器

sched.unscheduleJob(jobName,TRIGGER_GROUP_NAME);//移除触发器

 sched.deleteJob(jobName,JOB_GROUP_NAME);//删除任务

 } /** *//** * 移除一个任务 * @param jobName * @param jobGroupName * @param triggerName * @param triggerGroupName * @throws SchedulerException */

public static void removeJob(String jobName,String jobGroupName, String triggerName,String triggerGroupName) throws SchedulerException{

 Scheduler sched = sf.getScheduler();

sched.pauseTrigger(triggerName,triggerGroupName);//停止触发器

sched.unscheduleJob(triggerName,triggerGroupName);//移除触发器

sched.deleteJob(jobName,jobGroupName);//删除任务

}

}

测试工作类


[java] view plaincopyprint?
//测试工作类
//TestJob.java
package quartzPackage;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class TestJob implements Job {
SimpleDateFormat DateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = new Date();
String returnstr = DateFormat.format(d);
public void execute(JobExecutionContext arg0) throws JobExecutionException {
// TODO Auto-generated method stub
System.out.println(returnstr+"★★★★★★★★★★★");
}
}
//测试工作类 //TestJob.java

 package quartzPackage;

 import java.text.SimpleDateFormat;

import java.util.Date;

import org.quartz.Job;

import org.quartz.JobExecutionContext;

import org.quartz.JobExecutionException;

 public class TestJob implements Job {

 SimpleDateFormat DateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

 Date d = new Date();

String returnstr = DateFormat.format(d);

public void execute(JobExecutionContext arg0) throws JobExecutionException {

// TODO Auto-generated method stub System.out.println(returnstr+"★★★★★★★★★★★");

 }

}

第三方包

通过测试。一个简单任务只需要以下几个包:commons-beanutils.jar、commons-collections.jar、commons-logging.jar、commons-digester.jar、quartz.jar即可

名称必须/备注网址
activation.jar主要是 JavaMail 要用到http://java.sun.com/products/javabeans/glasgow/jaf.html
commons-beanutils.jarhttp://jakarta.apache.org/commons/beanutils
commons-collections.jarhttp://jakarta.apache.org/commons/collections
commons-dbcp-1.1.jar是,假如用到数据库作为作业存储http://jakarta.apache.org/commons/dbcp
commons-digester.jar假如你使用了某些插件,就需要它
commons-logging.jarhttp://jakarta.apache.org/commons/logging/
commons-pool-1.1.jarhttp://jakarta.apache.org/commons/pool/
javamail.jar发送 e-mail 用http://java.sun.com/products/javamail/
jdbc2_0-stdext.jar是,假如用到数据库作为作业存储http://java.sun.com/products/jdbc/
jta.jar是,假如用到数据库作为作业存储http://java.sun.com/products/jta/database
quartz.jarQuart 框架核心包
servlet.jar假如使用了Servlet 容器,但容器中应该存在http://java.sun.com/products/servlet/
log4j.jar是,日志http://logging.apache.org/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值