初识quartz

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());
	}
}

这样就可以简单的计划任务了,比使用线程方便,具体的使用还可以加入配置文件等,更高的版本功能更强大,但是使用方式好像不一样。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值