初识Quartz(2)

上一篇完成了一个Quartz 的小Demo,现在来看看这些code怎么工作的吧。
在我们创建一个Job的时候,对于每个Quartz Job必须有一个实现了org.quartz.job接口的具体类。这个接口仅有一个是要你在Job中实现的方法,execute()方法,它的原型:

pubilc void execute(JobExecutionContext context) throws JobExecutionException;

当Quartz scheduler确定到时间要激发一个Job时,它就会生成一个Job实例,并调用这个实例的execute()方法。scheduler只管调用execute()方法,而不关心执行的结果,(除Job执行的过程中抛出org.quartz.JobExecutionException)
这样我们可以在execute()方法中实现我们的业务逻辑,(发送一个电子邮件、调用一个工作流、FTP传一个文件等等)
在我们的作业Job执行的时候调用execute()方法的同时会传递一个org.quartz.JobExecutionContext上下文变量,在这个变量里封装了Quartz运行时环境和当前执行的Job。我们可以用过这个JobExecutionContext获得到调度器scheduler的信息、trigger的信息等等。
execute()剩下的code就是我们java的标准code来实现我们的业务逻辑。但是目前我们只是创建了一个Quartz Job,然而怎么处理它们呢?下面我们显然需要为这个Job指定一个它工作的时间表schedule。这时Scheduler 会帮助我们为所有的Job进行注册,必要时还可创建Job实例并执行实例中的execute()方法。 但是Scheduler每次执行实例时都会为Job创建新的实例。那么job中的任何变量在执行结束之后就会消失,但这样也就避免了俩个相同状态的Job实例的并发执行。
so我们得先通过createScheduler()方法从Scheduler工厂获取Scheduler实例。然后创建JobDetail来“封装”我们自定义的Job:

JobDetail job = JobBuilder.newJob(xxx.class).withIdentity("作业名","组名").build();



public JobDetail(String name,String group,Class jobClass);

对于Trigger我们可以选择SimpleTrigger或CronTrigger来创建一个trigger实例,SimpleTrigger较为简单,而CronTrigger较为复杂而且强大。
最后我们通过Scheduler的SchedulerJob()方法将Job同Scheduler进行关联。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值