初识Quartz

引言

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。
Quartz框架的核心是调度器。调度器负责管理Quartz应用运行时环境。调度器不是靠自己做所有的工作,而是依赖框架内一些非常重要的部件。Quartz不仅仅是线程和线程管理。为确保可伸缩性,Quartz采用了基于多线程的架构。启动时,框架初始化一套worker线程,这套线程被调度器用来执行预定的作业。这就是Quartz怎样能并发运行多个作业的原理。Quartz依赖一套松耦合的线程池管理部件来管理线程环境。

核心概念

  1. Schedule 调度器,quartz核心API,包含其他的组件一起完成工作。
  2. Job 是一个接口,在实现类里面完成自己特定的任务。
  3. JobDetail 使用用Job来定义,可以作为组件包含在调度器schedul中。
  4. Trigger 触发器,定义调度器何时执行任务。
  5. JobBuilder 用来生成JobDetail的工具类
  6. TriggerBuilder 用来生产Trigger的工具类

第一个程序

执行任务的类

 public void execute(JobExecutionContext context) throws JobExecutionException {
     System.out.println(new Date() + " Hello Quartz!");
 }

定时执行任务

Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
        //注意启动任务调度器
        scheduler.start();

        //创建一个name为myJob,分组在group1的任务
        JobDetail jobDetail = JobBuilder.newJob(HelloJob.class)
                .withIdentity("myJob", "group1")
                .build();

        //创建一个执行任务的触发器,每两秒钟触发一次任务
        Trigger trigger = TriggerBuilder.newTrigger()
                .withIdentity("myTrigger", "group1")
                .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                    .withIntervalInSeconds(2)
                    .repeatForever())
                .build();

        //把任务调度器和触发器关联起来
        scheduler.scheduleJob(jobDetail, trigger);

执行结果:

Fri Mar 24 14:49:57 CST 2017 Hello Quartz!
Fri Mar 24 14:49:59 CST 2017 Hello Quartz!
Fri Mar 24 14:50:01 CST 2017 Hello Quartz!
Fri Mar 24 14:50:03 CST 2017 Hello Quartz!
Fri Mar 24 14:50:05 CST 2017 Hello Quartz!

从执行结果来看确实是每两秒钟执行一次任务。
到此,一个类此Hello World的Quartz任务调度器就算完成了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值