博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Quartz
阅读量:6451 次
发布时间:2019-06-23

本文共 4017 字,大约阅读时间需要 13 分钟。

 一、Quartz简介 

    Quartz是一个开放源码项目,专注于任务调度器,提供了极为广泛的特性如持久化任务,集群和分布式任务等。Spring对Quartz的集成与其对JDK Timer的集成在任务、触发器和调度计划的声明式配置方面等都非常相似。
    Quartz的核心由两个接口和两个类组成:Job和Scheduler接口,JobDetail和Trigger类。不同于JDK Timer,任务不是从实现一个Job接口的类实例开始运行,实际上Quartz在需要的时候才创建job类实例。可以使用JobDetail类来包装任务状态,并传递一个信息给Job,或在一个Job的多次执行过程之间保存信息。 

 

 

 

 

 

1.创建实体类

package cn.happy.entity;public class Plan {    private String date; //时间        private String task; //任务            public Plan(String date, String task) {        this.date = date;        this.task = task;    }        public Plan() {            }    @Override    public String toString() {        return "Plan [date=" + date + ", task=" + task + "]";    }    public String getDate() {        return date;    }    public void setDate(String date) {        this.date = date;    }    public String getTask() {        return task;    }    public void setTask(String task) {        this.task = task;    }}

2.创建RemindService层

package cn.happy.service;import java.util.ArrayList;import java.util.Date;import java.util.List;import cn.happy.entity.Plan;public class RemindService {    public List
getPlansforToday(){ List
list=new ArrayList
(); Plan plan1=new Plan("2016-12-17 23:02:32","Study makes me happy!!"); Plan plan2=new Plan("2016-12-17 23:02:50","Really!!"); list.add(plan1); list.add(plan2); return list; } public void printMessage(){ List
list=getPlansforToday(); for (Plan plan : list) { System.out.println("计划的时间:"+plan.getDate()+"\t"+"计划的内容:"+plan.getTask()+"\t"+ new Date()); } }}

3.quartz层

package cn.happy.quartz;import org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;import cn.happy.service.RemindService;public class RemindJob implements Job {private RemindService service=new RemindService();    @Override    public void execute(JobExecutionContext arg0) throws JobExecutionException {                service.printMessage();                            }    public RemindService getService() {        return service;    }    public void setService(RemindService service) {        this.service = service;    }}

4.测试类

package cn.happy.test;import java.util.Date;import org.quartz.JobBuilder;import org.quartz.JobDetail;import org.quartz.Scheduler;import org.quartz.SchedulerFactory;import org.quartz.SimpleScheduleBuilder;import org.quartz.Trigger;import org.quartz.TriggerBuilder;import org.quartz.impl.StdSchedulerFactory;import cn.happy.quartz.RemindJob;public class MyQuartzTest {    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(3)//每隔三秒执行一次                     .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();        }        System.out.println("aa");    }}

效果:

 

转载于:https://www.cnblogs.com/Smile-123/p/6194537.html

你可能感兴趣的文章
移动铁通宽带上网设置教程
查看>>
java中判断字符串中是否有中文字符
查看>>
Python算法(含源代码下载)
查看>>
利用Windows自带的Certutil查看文件MD5
查看>>
通过原生js添加div和css
查看>>
简单的导出表格和将表格下载到桌面上。
查看>>
《ArcGIS Engine+C#实例开发教程》第一讲桌面GIS应用程序框架的建立
查看>>
递归查询上一级
查看>>
JAVA - 大数类详解
查看>>
查询指定名称的文件
查看>>
批处理文件
查看>>
1.每次按一下pushbutton控件,切换图片?
查看>>
Python 嵌套列表解析
查看>>
[GXOI/GZOI2019]旧词——树链剖分+线段树
查看>>
android 补间动画的实现
查看>>
2017年广东省ACM省赛(GDCPC-2017)总结
查看>>
第十届蓝桥杯B组C++题目详解和题型总结
查看>>
树的存储结构2 - 数据结构和算法42
查看>>
函数的嵌套调用
查看>>
OC中使用 static 、 extern、 const使用
查看>>