quartz中的job 的具体说明:
job是一个接口,只有一个方法void execute(JobExecutionContext context),开发者实现该接口定义运行任务,JobExecutionContext类提供了调度上下文的各种信息。Job运行时的信息保存在JobDataMap实例中;
job可分为无状态和有状态的job。它们之间的重大区别就是:两个或多个有状态的 JobDetail 实例不能并发执行。说的是你创建并注册了一个有状态 JobDetail 到 Scheduler 上。你还建立了两个 Trigger 来触发这个 Job:一个每五分钟触发,另一个也是每五分钏触发。假如这两个 Trigger 试图在同一时刻触发 Job,框架是不允许这种事情发生的。第二个 Trigger 一直会被阻塞直到第一个结束。
//创建相关的job信息
JobDetail job = newJob(HelloJobZ.class)
.withIdentity("jobtest1", "grouptest1")
.build();
trigger
trigger用来设置job的执行时间,执行频率。job只是执行的任务,根据trigger设置的频率,时间来执行job。trigger可分CronTrigger 和 SimpleTrigger 。SimpleTrigger里面提供一些方法,可以按间隔时间执行。个人认为,CronTrigger比较灵活一些,可以更方便的设置执行的时间和频率。
例如:
//创建一个触发器的名称
CronTrigger trigger = newTrigger()
.withIdentity("triggertest1", "grouptest1")
.withSchedule(cronSchedule("0/20 * * * * ?"))
.startNow()
.build();