• Quartz使用总结


    一、Quartz是一个任务调度框架。比如你遇到这样的问题

      1、想每月25号,信用卡自动还款

      2、想每年1月15日自己给当年暗恋女神发一封匿名贺卡

      3、想每隔1小时,备份一下自己的爱情动作片 学习笔记到云盘

    这些问题总结起来就是:在某一个有规律的时间点干某件事。并且时间的触发的条件可以非常复杂(比如每月最后一个工作日的17:50),复杂到需要一个专门的框架来干这个事。 Quartz就是来干这样的事,你给它一个触发条件的定义,它负责到了时间点,触发相应的Job起来干活

    二、Quartz核心概念

      1、调度器   2、任务  3、干触发器

    三、体系结构

    四、重要组成

      1、Job  2、JobDetail  3、JobBuilder  4、JobStore  5、Trigger 6、TriggerBuilder  7、ThreadPool  8、scheduler

      9、Calendar  10、监听器JobListener,TriggerListener,SchedulerListener

    五、第一个Quartz程序

    1、引入jar
        <!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
    <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz</artifactId>
        <version>2.3.0</version>
    </dependency>   
    2、代码
    public class HelloJob implements Job {
        @Override
        public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
            //打印当前时间
            Date date = new Date();
            SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM--dd HH:mm:ss");
            System.out.println("Current Exec Time is>>>" + sf.format(date));
            //todo
            System.out.println("Hello World!");
        }
    }
    /**
     * @Author zhumiao
     * @Date 22:52 2019/1/16
     */
    public class HelloSchedule {
        public static void main(String[] args) throws SchedulerException {
            //创建一个JobDetail实例,将实例与HelloJob class绑定
            JobDetail jobDetail = JobBuilder.newJob(HelloJob.class)
                    .withIdentity("myJob","group1").build();
            //创建一个Trigger实例,定义立即执行,并且3秒钟执行一次,到永久
            Trigger trigger = TriggerBuilder.newTrigger().withIdentity("myTrigger","group1")
                                .startNow().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(3).repeatForever())
                                .build();
            //创建scheduler实例
            SchedulerFactory sft = new StdSchedulerFactory();
            Scheduler scheduler = sft.getScheduler();
            scheduler.start();
            Date date = new Date();
            SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM--dd HH:mm:ss");
            System.out.println("Current Exec Time is>>>" + sf.format(date));
            scheduler.scheduleJob(jobDetail,trigger);
        }
    }
    View Code

    参考:https://www.cnblogs.com/drift-ice/p/3817269.html

    zhumiao
  • 相关阅读:
    生产者—消费者模型
    使用wait/notify/notifyAll实现线程间通信的几点重要说明
    死锁
    python基础:协程详解
    python爬虫:multipart/form-data格式的POST实体封装与提交
    python爬虫:Multipart/form-data POST文件上传详解
    python爬虫:http请求头部(header)详解
    python爬虫:登录百度账户,并上传文件到百度云盘
    python爬虫:urlparse模块拆分url
    转:python爬虫:html标签(图文详解二)
  • 原文地址:https://www.cnblogs.com/zhumiao/p/10262337.html
Copyright © 2020-2023  润新知