java Quartz

Quartz 使用

在使用Quartz 前需要明白几个定义,第一就是,每个任务在都需要有调度器去调度该任务对应的触发器,然后才能按照时间表达式触发 ,执行业务代码;

一:jobDetail:具体的业务实现
二:触发器:触发业务的时间逻辑
三:调度器:负责调度触发器执行

~~~代码示例

public class QuartzTest {
    public static void main(String[] args) {
        try {

//            DirectSchedulerFactory instance = DirectSchedulerFactory.getInstance();
//            instance.createVolatileScheduler(10);
            /**
             * //创建一个定时器对象
             */
            Scheduler scheduler= StdSchedulerFactory.getDefaultScheduler();

            /**
             * 创建一个jobDetail
             */
            JobDetail job=JobBuilder.newJob(HelloJob.class).withIdentity("job1","group12").build();
            //每5秒运行一次job
            /**
             * 创建一个定时触发器 trigger
             */
            Trigger trigger=TriggerBuilder.newTrigger().withIdentity("trigger1","group12").startNow()
                    .withSchedule(CronScheduleBuilder.cronSchedule("*/5 * * * * ?")).build();


            Trigger trigger2=TriggerBuilder.newTrigger().withIdentity("trigger2","group13").startNow()
                    .withSchedule(CronScheduleBuilder.cronSchedule("*/8 * * * * ?")).build();

//            /**
//             * 通过jobName和组名删除任务
//             */
//            scheduler.deleteJob(JobKey.jobKey("job1","group1"));
//
//            /**
//             * 删除当前任务的触发器
//             */
//            scheduler.unscheduleJob(TriggerKey.triggerKey("trigger1","group12"));


            

            /**
             * 触发执行定时触发器
             */
//            scheduler.scheduleJob(job,trigger);

            scheduler.scheduleJob(job,new HashSet<Trigger>(){{add(trigger);add(trigger2);}},false);
//            scheduler.scheduleJob(job,trigger2);
            scheduler.start();
            List<String> s=scheduler.getJobGroupNames();
            List<? extends Trigger> job1 = scheduler.getTriggersOfJob(JobKey.jobKey("job1","group12"));
            System.out.println(job1);

            System.out.println(s);
            TimeUnit.SECONDS.sleep(11);
            scheduler.shutdown();
        } catch (Throwable e) {
            e.printStackTrace();
        }
    }
}
/**
 * Scheduler的常用方法
 * 添加一个定时任务:
 * Date scheduleJob(JobDetail jobDetail,Trigger trigger)
 *
 * 修改一个定时任务,主要是更改trigger:
 * Date rescheduleJob(String triggerName, String groupName, Trigger newTrigger)
 *
 * 删除一个定时任务,同时也会将于该jobDetail关联的trigger一并删除:
 * boolean deleteJob(String jobName,String jobGroup)
 *
 * 取得所有的jobDetail组
 * String[] getJobGroupNames()
 *
 * 取得某个group下的所有的jobDetail
 * String[] getJobNames(String groupName)
 *
 * 取得指定的jobDetail
 * JobDetail getJobDetail(String jobName, String jobGroup)
 *
 * 取得指定的jobDetail的所有的Trigger
 * Trigger[] getTriggersOfJob(String jobName, String groupName)
 *
 * 取得指定的Trigger
 * Trigger getTrigger(String triggerName, String triggerGroup)
 */

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值