QUARTZ 定时任务使用

目录

quartz 定时任务使用

准备工作

xml配置定时任务

执行结果分析

其它方式-注解配置


quartz 定时任务使用

        工作中难免会用都定时任务,如果公司针对定时任务没有特别的要求,分布式定时任务你可以选择开源的定时任务elastic-job,与spring结合简单方便(当然需要zookeeper的支持);但是如果你所在的公司针对部分开源不感冒,或者有自己的组件化团队,或者自研的定时任务框架还在研发中,那么你只能选择java自带的Timer,或者Quartz,或者Spring3.0以后自带的task。这里我们介绍下Quartz的使用,感觉应用还是比较广泛的的。

准备工作

引入以下jar包:spring-context-support、quartz

    
        org.springframework
        spring-context-support
        5.0.7.RELEASE
    

    
      org.quartz-scheduler
      quartz
      2.2.3

xml配置定时任务

QUARTZ 定时任务使用_第1张图片

  • java类:代码自定义的类,Job中业务逻辑
  • Job:任务job包括job需要的各种属性
  • Trigger:触发器定义job的执行规则,经常使用SimpleTrigger、CroTrigger
  • Scheduler:调度器管理Job、Trigger。一个Job可以有多个Trigger,一个Trigger只能对应一个Job
/**
 * @author yxf
 */
public class AdminJob {

    public void job1() {
        System.out.println("执行定时任务-job");
        try {
            System.out.println("定时任务执行中...");
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            System.out.println("定时任务-job执行异常");
        }
        System.out.println("执行定时任务-job 结束");
    }
}


   
   
       
       
       
       
   

   
   
       
       
       
   

   

       
           
               
           
       
   

   
       
       
       
   

执行结果分析

--->代码中我们让线程睡了3s;定时任务我们配置的为每隔1s执行一次;目前是每隔3s执行一次

QUARTZ 定时任务使用_第2张图片

控制定时任务是否并发的配置,默认为true。当为true时同一个定时任务如果还未执行完,到时间点后还会再次开启;

       
      
name="concurrent" value="false"/>

    我们看下concurrent=true时的执行结果

QUARTZ 定时任务使用_第3张图片

QUARTZ 定时任务使用_第4张图片

其它方式-注解配置





QUARTZ 定时任务使用_第5张图片

你可能感兴趣的:(java-基础)