zoukankan      html  css  js  c++  java
  • quartz 定时器

    什么是Quartz

    Quartz是一个完全由Java编写的开源作业调度框架,为在Java应用程序中进行作业调度提供了简单却强大的机制。Quartz允许开发人员根据时间间隔来调度作业。它实现了作业和触发器的多对多的关系,还能把多个作业与不同的触发器关联。

    Quartz 核心组件

    • Scheduler:调度容器

    • Job:Job 接口类,即被调度的任务

      Job 是一个接口,只有一个方法 void execute(JobExecutionContext context),开发者实现接口来定义任务。JobExecutionContext 类提供了调度上下文的各种信息。Job 运行时的信息保存在 JobDataMap 实例中。

    • JobDetail:Job 的描述类,job执行时的依据此对象的信息反射实例化出Job的具体执行对象

      JobDetail绑定指定的Job,每次Scheduler调度执行一个Job的时候,首先会拿到对应的Job,然后创建该Job实例,再去执行Job中的execute()的内容,任务执行结束后,关联的Job对象实例会被释放,且会被JVM GC清除。

    • Trigger:触发器,包括SimpleTrigger和CronTigger

      SimpleTrigger:当仅需触发一次或者以固定时间间隔周期执行,SimpleTrigger是最适合的选择。

      CronTrigger:CronTrigger功能非常强大,是基于日历的作业调度,而SimpleTrigger是精准指定间隔,所以相比SimpleTrigger,CroTrigger更加常用。

      Cron 表达式格式:[秒] [分] [小时] [日] [月] [周] [年]

    • JobStore:存储作业和调度期间的状态

    • Calendar:指定排除的时间点

    Quartz Demo

    利用Quartz 搭建一个简单的demo

    1. 引入依赖jar 包

      <dependency>
      	<groupId>org.quartz-scheduler</groupId>
      	<artifactId>quartz</artifactId>
      	<version>2.2.3</version>
      </dependency>
      
    2. 配置quartz的任务

      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"
             default-lazy-init="false">
      
      
          <bean id="AcceptTaskListener" class="com.XXX.base.task.AcceptTaskListener"/>
          <bean id="saveAccept" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
              <property name="targetObject">
                  <ref bean="AcceptTaskListener"/>
              </property>
              <property name="targetMethod">
                  <value>saveAcceptInfo</value>
              </property>
          </bean>
          <bean id="saveAccpet_cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
              <property name="jobDetail" ref="saveAccept"/>
              <property name="cronExpression">
                  <value>0 30 01,07,13 * * ?</value>
              </property>
          </bean>
      
          <bean id="startQuertz" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
              <property name="triggers">
                  <list>
                      <ref bean="statusSynchronize_cronTrigger"/>
                  </list>
              </property>
          </bean>
      </beans>
      
    3. 执行任务的具体内容

      public class AcceptTaskListener {
      	public void saveAcceptInfo() {
      		****具体任务逻辑****
      	}
      }
      
  • 相关阅读:
    51nod乘积之和
    Dell服务器安装OpenManage(OMSA)
    Nginx反向代理PHP
    搭建haproxy
    108. Convert Sorted Array to Binary Search Tree
    60. Permutation Sequence
    142. Linked List Cycle II
    129. Sum Root to Leaf Numbers
    118. Pascal's Triangle
    26. Remove Duplicates from Sorted Array
  • 原文地址:https://www.cnblogs.com/ghostwolf1/p/14141523.html
Copyright © 2011-2022 走看看