quartz版本:1.8.6 版本有点老了,新版本暂时没看。
1.首先是要加入jar包
2.以单例模式定义自己的Scheduler
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;
public class MsgScheduler
{
public static final String JOB_GROUP = "job_default";
public static final String TRI_GROUP = "tri_default";
private static Scheduler instance=null;
private MsgScheduler(){}
public static Scheduler getInstance() {
if(instance==null)
{
try
{
SchedulerFactory sf = new StdSchedulerFactory();
instance = sf.getScheduler();
}
catch (SchedulerException e)
{
e.printStackTrace();
}
}
return instance;
}
}
3.定义job和trigger,并设定必要的参数,同时可以为job注入数据。
JobDetail job = new JobDetail("job_"+id, SysMsgJob.class);
job.setGroup(MsgScheduler.JOB_GROUP);
JobDataMap data = new JobDataMap();
data.put("sid", String.valueOf(sid));
data.put("type", type);
data.put("content", content);
job.setJobDataMap(data);
SimpleTrigger trigger = new SimpleTrigger("tri_"+id, MsgScheduler.TRI_GROUP);
trigger.setStartTime(starttime);
trigger.setEndTime(endtime);
trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
trigger.setRepeatInterval(alterTime);
Scheduler scheduler = MsgScheduler.getInstance();
try
{
if(!scheduler.isStarted()) scheduler.start();
Date date = scheduler.scheduleJob(job, trigger);
}
catch (SchedulerException e)
{
e.printStackTrace();
}
4.实现Job类,在execute方法中规定自己要实现的任务。可以用JobDataMap获取到以前传入的参数。
import org.quartz.Job;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class MsgJob implements Job
{
public MsgJob()
{
}
@Override
public void execute(JobExecutionContext ctx) throws JobExecutionException
{
JobDetail job = ctx.getJobDetail();
JobDataMap data = job.getJobDataMap();
String sid = data.getString("sid");
int type = data.getInt("type");
String content = data.getString("content");
System.out.println("sendTheMessage:===="+content + " time:"+new Date());
}
}
这样就可以简单的计划任务了,比使用线程方便,具体的使用还可以加入配置文件等,更高的版本功能更强大,但是使用方式好像不一样。