Quartz框架主要分为三部分:
1 任务
2 触发器
3 调度器
谢了一个简单例子,大家可以看下
public class RemindJob implements Job {
int[]param=new int[]{1,2,3,4,5,6,7};
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
for(int i=0;i<param.length;i++){
if(param[i]<10){
param[i]=5;
}
System.out.println(param[i]);
}
}
}
创建一个任务类,下面是一个测试类
public class TestQuartz {
public static void main(String[] args) throws SchedulerException, ParseException, InterruptedException {
//创建job 任务
JobDetail job=new JobDetail("myJob","A",RemindJob.class);
//创建触发器-trigget
SimpleTrigger trigger=new SimpleTrigger("myTrigger",
SimpleTrigger.REPEAT_INDEFINITELY,3000);
//秒 分 时 日 月 周 年 日和周如果不是实际数,必须有一个是?,一个是*来代表
//中划线 范围
//逗号 列表
//除号 增量
CronTrigger cronTrigger=new CronTrigger("myCronTrigger","B","0/3 * * ? * * ");
// trigger.setStartTime(new Date(System.currentTimeMillis()+1000));
//创建调度器
//创建Scheduler工程
SchedulerFactory factory=new StdSchedulerFactory();
Scheduler scheduler=factory.getScheduler();
//粘合任务和调度器
// scheduler.scheduleJob(job,trigger);
scheduler.scheduleJob(job,cronTrigger);
scheduler.start();
Thread.sleep(2000000);
scheduler.shutdown();
}
}
CronTrigger(“myCronTrigger”,“B”,"0/3 * * ? * * ");里面的"0/3 * * ? * * "非常有意思,这个是6个,分别是秒,分,时,日,月,周.当年也可以在加个年。其中日和周可以用?代替,代表每一天,每一周,但只能存在一个问号,另一个必须用*代替。
秒,分,时分别可用,和—来标识,如0-10 13 14 * * ? 这个就代表每周的14点13分0至10.
很简单,每隔三秒执行一次,将数组里面的值如果小于10,就都赋值成为5.
这个定时任务应用就比较广泛了,比如媒体定时发布新闻,设置哪一天定时发布,那就可以写一个方法,每隔几秒钟查询一次数据库,当然查出来的数据是一个集合。当定时的时间小于等于系统时间,就可改变状态发布了