quartz定时器框架

12 篇文章 0 订阅

quartz定时器

一、quartz定时器是什么,

quartz是一个功能丰富,开源的任务调度的定时器的框架;可以兼容从最小的标准的java程序到最最大的电子商务系统的框架。quartz可以创建几十,几百,甚至成千上万的工作任务事件表;这些任务可以是一个标准的java组件,可以执行几乎你所有的计划去做的事情。

二、quartz定时器应用场景

quartz是一个定时任务调度的的框架,比如你在未来某天要礼物给女朋友,可以使用这个框架达到你的想法。

总的来说;在规律的时间点上想要去干某些事,quartz框架就可以简单帮你处理这些事情。

三、quartz定时器优缺点

四、quartz定时器原理

五、quartz定时器使用的例子

(一)、官方的使用例子

1、使用继承org.quartz.Job类创建一个你自己工作任务的Job类,继承的execute()方法是可以实现你实际想要的工作内容。

 

public class MyJob implements org.quartz.Job {

      public MyJob() {
      }

      public void execute(JobExecutionContext context) throws JobExecutionException {
          System.err.println("Hello World!  MyJob is executing.");
      }
  }

2、逐步实现你的定时配置。

 

// define the job and tie it to our MyJob class
//定义一个你的任务操作实体。
  JobDetail job = newJob(MyJob.class)
      .withIdentity("job1", "group1")
      .build();

  // Trigger the job to run now, and then repeat every 40 seconds
//定义好你的时间点的触发器
  Trigger trigger = newTrigger()
      .withIdentity("trigger1", "group1")
      .startNow()
      .withSchedule(simpleSchedule()
              .withIntervalInSeconds(40)
              .repeatForever())
      .build();

  // Tell quartz to schedule the job using our trigger
//把你的工作的内容实体和触发器添加到你的quartz的任务工作表中。
  scheduler.scheduleJob(job, trigger);

 

(二)、quartz结合Spring框架的使用

 

 1、创建你是实际工作任务的实体,要在applicationContext.xml文件中创建,要不然是null了

	<bean id="updateUumsSmsSendTask"
		class="com.newsoft.sysmanager.uums.thread.UpdateUumsSmsSendTask"></bean>

2.使用1步骤的创建好的updateUumsSmsSendTask的实体去创建job类实体,

<bean id="SmsSendClock" class="org.springframework.scheduling.quartz.JobDetailBean">
		<property name="jobClass">
			<value>com.newsoft.sysmanager.uums.thread.UpdateUumsSmsSendQuartz</value>
		</property>
		<property name="durability" value="true" />
		<property name="jobDataAsMap">
			<map>
				<entry key="updateUumsSmsSendTask" value-ref="updateUumsSmsSendTask" />
			</map>
		</property>
	<!---->
	</bean>

3.使用2步骤创建的实体SmsSendClock去创建一个触发器SmsSendTrigger,

 

<bean id="SmsSendTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
		<property name="jobDetail">
			<ref bean="SmsSendClock"></ref>
		</property>
		<property name="cronExpression">
			<value>0 * * * * ?</value> <--秒,分,时,月,星期,年  -->
		</property> 
</bean>

4.使用3步骤创建好的SmsSendTrigger触发器创建运行Scheduler类的实体

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="triggers">
			<list>
					<ref bean="SmsSendTrigger"></ref> 
			</list>
		</property>
	</bean>

5.com.newsoft.sysmanager.uums.thread.UpdateUumsSysUserTask类

 
/* 
 * 更新统一系统用户信息服务
 * 
 * @author liangchuhong
 * 
 */
public class UpdateUumsSysUserTask {
	final static Logger logger = Logger.getLogger(UpdateUumsSysUserTask.class);
	private static boolean running = true;
	
	@Autowired
	private SysUserDAO sysUserDAO;
	@Autowired
	private UpdateLogDao updateLogDao;
	
	public void run() {
		if (!running) {
			return;
		}
		try {
			running = false;
			//全量更新
			sysuseradd();
			//增量更新
			/*sysuseronlyadd();*/
			running = true;
		} catch (Exception e) {
			logger.error("Error when UpdateUumsSysUserTask ", e);
			e.printStackTrace();
		}
	}
	
	@SuppressWarnings("rawtypes")
	private void sysuseradd() {
//你可以实现的内容	
	}
	
}

6、com.newsoft.sysmanager.uums.thread.UpdateUumsSmsSendQuartz类

public  class UpdateUumsSmsSendQuartz  extends QuartzJobBean {	
final static Logger log = Logger.getLogger(UpdateUumsSmsSendQuartz.class);
	private UpdateUumsSmsSendTask updateUumsSmsSendTask ;//= new UpdateUumsSmsSendTask();
	
	@Override  
	protected void executeInternal(JobExecutionContext arg0)   
	           throws JobExecutionException {   
	     //重写方法 定时实现的内容   
		log.debug("发送消息");
		updateUumsSmsSendTask.run();	
	}
	public UpdateUumsSmsSendTask getUpdateUumsSmsSendTask() {
		return updateUumsSmsSendTask;
	}
	@SuppressWarnings("static-access")
	public void setUpdateUumsSmsSendTask(UpdateUumsSmsSendTask updateUumsSmsSendTask) {
		this.updateUumsSmsSendTask = updateUumsSmsSendTask;
	}
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值