Quartz学习---入门demo【任务调度的运行信息在内存】(一)

定时任务经常使用,从未研究其内部原理等。实际项目中多机部署时遇到问题,项目部署在不同服务器上。同一时间同时启动怕出现错误。于是有了此篇文章。
首先先从简单的demo入手(log4j.properties未配置,任务调度的运行信息在内存):
使用SimpleTrigger
1. 新建了一个Java类让它实现quartz的job方法,这就是一个简单的job。

/**
 * 简单的job类 
 *
 */
public class SimpleJob implements Job{
   

    @Override
    public void execute(JobExecutionContext jobContext) throws JobExecutionException {
        System.out.println("jobContext.getTrigger():"+jobContext.getTrigger().getJobDataMap()+"时间"+new Date());     
    }

}

2.Quartz在每次执行Job时,都重新创建一个Job实例,所以它不直接接受一个Job的实例,相反它接收一个Job实现类,以便运行时通过newInstance()的反射机制实例化Job。因此需要通过一个类来描述Job的实现类及其它相关的静态信息,如Job名字、描述、关联监听器等信息,JobDetail承担了这一角色。因此我们还需要创建一个JobDetail实例并且指定是那个job.最后定义我们的触发规则类,只有触发规则和我们的job关联起来才能实现我们想要的功能。

public class SimpleTrigger {

    public static void main(String[] args) throws SchedulerException {
        // 定义一个jobDetail
        JobDetail jobDetail = JobBuilder.newJob(SimpleJob.class).build();
        // 定义一个触发规则每5秒触发一次总计3次
        Trigger trigger = TriggerBuilder.newTrigger()
                .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                .withIntervalInSeconds(5).withRepeatCount(3))
                .build();       
        //通过SchedulerFactory获取一个调度器实例 
        SchedulerFactory schedulerFactory = new StdSchedulerFactory();            
        Scheduler scheduler = schedulerFactory.getScheduler(); 
        scheduler.scheduleJob(jobDetail, trigger);
        //启动调度
        scheduler.start();

    }

}

执行结果: 刚启动有一次定义了三次共4次

log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
2018-03-09 10:56:38Hello Quartz!
2018-03-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值