星空网 > 软件开发 > Java

Quartz框架 实现任务调度

1.任务

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

2.触发器

Trigger:是一个类,描述触发Job执行的时间触发规则。主要有SimpleTrigger和 CronTrigger这两个子类。当仅需触发一次或者以固定时间间隔周期执行,SimpleTrigger是最适合的选择;而CronTrigger则 可以通过Cron表达式定义出各种复杂时间规则的调度方案:如每早晨9:00执行,周一、周三、周五下午5:00执行等;

3.调度器

JobDetail:Quartz在每次执行Job时,都重新创建一个Job实例,所以它不直接接受一个Job的实例,相反它接收一个Job实现类,以便运行时通过newInstance()的反射机制实例化Job。因此需要通过一个类来描述Job的实现类及其它相关的静态信息,如Job名字、描述、关联**等信息,JobDetail承担了这一角色。

创建一个Quartz工作

1.计划实体类

/****计划实体类*/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.提醒服务类

/** * * @提醒服务类 * */public class RemindService {  //数据查询  public List<Plan> getPlansForToday(){    List<Plan> list=new ArrayList<Plan>();    Plan p1=new Plan("2016-11-3","呵呵");    Plan p2=new Plan("2016-11-4","嘿嘿");    list.add(p1);    list.add(p2);    return list;      }  //提醒服务类  public void ouputPlan(){    List<Plan> forToday = getPlansForToday();    for (Plan plan : forToday) {      System.out.println("计划时间"+plan.getDate()+"计划内容"+plan.getTask());    }  }}

3.提醒任务类

/** * * @提醒任务类 * */public class RemindJob implements Job {  private RemindService service=new RemindService();    public void execute(JobExecutionContext arg0) throws JobExecutionException {    service.getPlansForToday();      }  public RemindService getService() {    return service;  }  public void setService(RemindService service) {    this.service = service;  }}

4.调度定时器任务

public class TestJob {  public static void doRemind() throws SchedulerException, InterruptedException{    //创建一个任务    JobDetail job =JobBuilder.newJob(RemindJob.class).withIdentity("job1", "group1").build();    //创建一个触发器        /*Trigger trigger = TriggerBuilder.newTrigger()         .withIdentity(TriggerKey.triggerKey("myTrigger", "myTriggerGroup"))        .withSchedule(SimpleScheduleBuilder.simpleSchedule()          .withIntervalInMilliseconds(2))        .startAt(new Date(System.currentTimeMillis()+2000))        .build();*/    Trigger trigger=TriggerBuilder.newTrigger().withIdentity("myTrigger", "group1").        withSchedule(CronScheduleBuilder.cronSchedule("0 34 16 ? * 5#1 2016")).build();    SchedulerFactory s=new StdSchedulerFactory();    Scheduler scheduler = s.getScheduler();    //注册并进行调度    scheduler.scheduleJob(job,trigger);    //启动调度    scheduler.start();    //睡眠10s    //Thread.sleep(10000);    //关闭调度    //scheduler.shutdown();  }    public static void main(String[] args) throws SchedulerException, InterruptedException {      doRemind();    }}

Cron表达式

Quartz框架   实现任务调度

Quartz框架   实现任务调度

 




原标题:Quartz框架 实现任务调度

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

“亚马逊效应”将如何改变2019年零售格局?:https://www.ikjzd.com/articles/14661
亚马逊QA怎么做?需要注意什么?:https://www.ikjzd.com/articles/146610
煤炉Mercari平台真的很好做吗?物流收款怎么解决?:https://www.ikjzd.com/articles/146611
亚马逊新卖家新产品没有review怎么办?:https://www.ikjzd.com/articles/146612
读懂亚马逊与独立站的区别,站外引流,私域流量!:https://www.ikjzd.com/articles/146613
这一份TikTok指南,值得拥有!:https://www.ikjzd.com/articles/146614
武陵山大裂谷周围景点 武陵山大裂谷周围景点图片:https://www.vstour.cn/a/411233.html
南美旅游报价(探索南美洲的旅行费用):https://www.vstour.cn/a/411234.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流