你好,游客 登录 注册 搜索
背景:
阅读新闻

Quartz实现任务调度

[日期:2016-12-18] 来源:Linux社区  作者:hq-123 [字体: ]

Quartz框架核心概念

  Quartz对任务调度进行了高度抽象,提出了3个核心概念,并在org.quartz包中通过接口和类进行了描述。

  任务:就是执行的工作内容。Quartz提供Job接口来支持任务定义

  触发器:定义触发Job执行的时间触发规则。Quartz提供Trigger类及其子类支持触发器功能,

  调度器:Quartz提供了Scheduler接口,将工作任务和触发器绑定,保证任务可以在正确的时间执行

Quartz框架的使用流程

  在系统中,对员工张三的工作任务进行提醒,实现每3秒钟进行一次任务提醒,定时器在10秒钟后关闭。

 

案例流程如下:

  1.引入jar包

  

  2.创建实体类

  

  3.创建service

public class RemindService {

    
    //创建集合,书写内容
    public List<Plan> getPlayToday(){
        
        List<Plan> list=new ArrayList<Plan>();
        
        Plan plan1=new Plan("12月17日", "快回家了!!!");
        Plan plan2=new Plan("12月18日", "这是真的!!!");
        
        list.add(plan1);
        list.add(plan2);
        
        return list;
    }
    
    //打印计划的时间与内容
    public void plintMessage(){
        List<Plan> list=getPlayToday();
        for (Plan plan : list) {
            System.out.println("计划的时间:"+plan.getDate()+"计划的内容:"+plan.getTask());
        }
        
    }
    
    
}

  4.创建quartz

public class RemindJob implements Job {

    //植入service
    private RemindService service = new RemindService();
    
    @Override
    public void execute(JobExecutionContext arg0) throws JobExecutionException {
        service.plintMessage();
    }

    
    public RemindService getService() {
        return service;
    }

    public void setService(RemindService service) {
        this.service = service;
    }
    
}

  5.测试类:

public class MyQuertzTest {
    
    public static void tool() throws Exception{
        
        //创建job
        JobDetail job = JobBuilder.newJob(RemindJob.class)//
                .withIdentity("job1", "group1").build();
        
        //构建trigger
        /* CronTrigger trigger = TriggerBuilder.newTrigger().//
                 withIdentity("trigger1", "group1").//
                 withSchedule(CronScheduleBuilder.cronSchedule("0 40 18 ? * 7#3 2016"))
                 .build();  */

        Trigger trigger = TriggerBuilder.newTrigger() 
                 .withIdentity("myTrigger", "myTriggerGroup")
                 .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                     .withIntervalInSeconds(60)
                     .repeatForever())
                 .startAt(new Date(System.currentTimeMillis()))
                 .build();
        
        //创建调度者工厂
        SchedulerFactory sfc = new StdSchedulerFactory();
        //创建一个调度者
        Scheduler sched=sfc.getScheduler();    
        //注册并进行调度
        sched.scheduleJob(job, trigger);
        sched.start();
        //Thread.sleep(3000);
        
    }
    
    public static void main(String[] args)  {
        try {
            tool();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

使用CronTrigger(特定时间,特定操作)

CronTrigger也是Trigger的子类

CronTriggerSimpleTrigger的对比:

CronTrigger允许用户更精准地控制任务的运行日期和时间,而不仅仅是定义工作的频度

CronTrigger通过Cron表达式定义准确的运行时间点。创建CronTrigger的语法如下:

 


 Cron表达式

 要使用CronTrigger,必须掌握Cron表达式

 Cron表达式由6~7个由空格分隔的时间元素组成。第7个元素可选 

 

Cron表达式有几个特殊的字符,说明如下:

Cron表达式案例:

Spring3.2.11与Quartz2.2.1整合时内存泄漏问题解决  http://www.linuxidc.com/Linux/2015-06/119042.htm

Spring配置Quartz任务调度框架教程  http://www.linuxidc.com/Linux/2014-11/108907.htm

Quartz深入浅出 http://www.linuxidc.com/Linux/2014-09/107007.htm

Quartz1.6有状态JOB碰到的棘手问题既解决方案 http://www.linuxidc.com/Linux/2014-09/107005.htm

Spring 3整合Quartz 2实现定时任务 http://www.linuxidc.com/Linux/2014-09/107006.htm

Java项目中定时任务之Quartz的应用 http://www.linuxidc.com/Linux/2013-12/94443.htm

Spring 3 调度器示例 —— JDK 定时器和 Quartz 展示 http://www.linuxidc.com/Linux/2013-10/91946.htm

Quartz框架 实现任务调度 http://www.linuxidc.com/Linux/2016-11/136778.htm

Spring Quartz定时任务 http://www.linuxidc.com/Linux/2016-11/137525.htm

本文永久更新链接地址http://www.linuxidc.com/Linux/2016-12/138508.htm

linux
相关资讯       Quartz任务调度 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款