• quartz系列2:作业存储类型之RAM作业存储


    一、简介:

    在默认情况下Quartz将任务调度的运行信息保存在内存中,这种方法提供了最佳的性能,因为内存中数据访问最快。不足之处是缺乏数据的持久性,当程序路途停止或系统崩溃时,所有运行的信息都会丢失。

     

    二、使用:

    1、加入pom依赖

        <!-- quartz -->
        <dependency>
             <groupId>org.quartz-scheduler</groupId>
             <artifactId>quartz</artifactId>
             <version>2.2.1</version>
        </dependency>
        <dependency>
                <groupId>org.quartz-scheduler</groupId>
                <artifactId>quartz-jobs</artifactId>
                <version>2.2.1</version>
        </dependency>

    2、编写自定义任务类:Myjob

    import org.quartz.*;
    import org.quartz.impl.JobDetailImpl;
    import org.quartz.impl.StdSchedulerFactory;
    import org.quartz.impl.triggers.SimpleTriggerImpl;
    import java.util.Date;
    
    // 自定义任务类:Myjob
    public class MyJob implements Job {
        public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
            System.out.println(new Date() + ": doing something...");
        }
    }

    3、编写测试代码

    import org.quartz.*;
    import org.quartz.impl.JobDetailImpl;
    import org.quartz.impl.StdSchedulerFactory;
    import org.quartz.impl.triggers.SimpleTriggerImpl;
    import java.util.Date;
    
    public class JobTest {
        public static void main(String[] args) {
            //1、创建JobDetial对象
            JobDetailImpl jobDetail = new JobDetailImpl();
            //设置工作项
            jobDetail.setJobClass(MyJob.class);
            jobDetail.setName("MyJob_1");
            jobDetail.setGroup("JobGroup_1");
    
            //2、创建Trigger对象
            SimpleTriggerImpl strigger = new SimpleTriggerImpl();
            strigger.setName("Trigger_1");
            strigger.setGroup("Trigger_Group_1");
            strigger.setStartTime(new Date());
            //设置重复间隔时间
            strigger.setRepeatInterval(1000 * 1L);
            //设置重复执行次数
            strigger.setRepeatCount(3);
    
            //3、创建Scheduler对象,并配置JobDetail和Trigger对象
            SchedulerFactory sf = new StdSchedulerFactory();
            Scheduler scheduler = null;
            try {
                scheduler = sf.getScheduler();
                scheduler.scheduleJob(jobDetail, strigger);
                //4、并执行启动、关闭等操作
                scheduler.start();
            } catch (SchedulerException e) {
                e.printStackTrace();
            }
        }
    }

    执行结果:

    img

     

    从这里也可以看出,scheduler是个容器,scheduler控制jobDetail的执行,控制的策略是通过trigger。当scheduler容器启动后,jobDetail才能根据关联的trigger策略去执行。当scheduler容器关闭后,所有的jobDetail都停止执行。

     

  • 相关阅读:
    C#获取当前路径
    惠普辞退4000员工,今后如何走
    提升你的编码技能,你不知道的免费在线编码资源(上)
    iPhone 5在美销量有望破5000万,Facebook手机何去何从?
    Python获取命令行参数
    C#递归获取文件目录
    Pixel’d:共创美好的像素艺术
    PayPal走向现实支付,消费者们会来买帐吗?
    兼容性测试、手工测试、自动化测试及探索性测试
    冒烟测试 smoking test
  • 原文地址:https://www.cnblogs.com/XueTing/p/13750732.html
Copyright © 2020-2023  润新知