说明:
前一个 菜鸟学堂 -【Java 定时器 】 发现一个问题:
TImer 启动后,你再去修改pc的时间,timer里面的时间是不受影响的,timer是以启动时的时间为准。
那么必须要使用很多人推荐的Quartz了
JOB类:定期执行的任务类,也就是你要做的任务,放在这个类里面
public class Myjob implements Job{
public Myjob() {
System.out.println(123);
}
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
System.out.println("Hello World! - " + new Date());
}
}
JOB启动类:每隔10秒中执行一次。
JobDetail:详细的job,就是任务job,需要给一个名称和组,
将job加入到日程当中,开启这个日程。
如果多有job要执行,则建立多个job,都add到日程中就可以了。
public class Cron {
public static void main(String[] args) {
try {
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
String jobName = "job1";
String groupName = "group1";
String triggerName = "trigger1";
JobDetail job = new JobDetail(jobName, groupName, Myjob.class);
// Seconds
// Minutes
// Hours
// Day-of-Month
// Month
// Day-of-Week
// Year (optional field)
CronTrigger trigger = new CronTrigger(triggerName, groupName, jobName,
groupName, "/10 * * * * ?");
sched.addJob(job, true);
Date ft = sched.scheduleJob(trigger);
System.out.println(job.getFullName()+"马上启动了--"+ft);
sched.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
输出:
2012-04-05 15:02:14,640 INFO [org.quartz.impl.StdSchedulerFactory] - Using default implementation for ThreadExecutor
2012-04-05 15:02:14,640 INFO [org.quartz.simpl.SimpleThreadPool] - Job execution threads will use class loader of thread: main
2012-04-05 15:02:14,687 INFO [org.quartz.core.SchedulerSignalerImpl] - Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
2012-04-05 15:02:14,703 INFO [org.quartz.core.QuartzScheduler] - Quartz Scheduler v.1.8.6 created.
2012-04-05 15:02:14,718 INFO [org.quartz.simpl.RAMJobStore] - RAMJobStore initialized.
2012-04-05 15:02:14,718 INFO [org.quartz.core.QuartzScheduler] - Scheduler meta-data: Quartz Scheduler (v1.8.6) 'DefaultQuartzScheduler' with instanceId 'NON_CLUSTERED'
Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
NOT STARTED.
Currently in standby mode.
Number of jobs executed: 0
Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.
2012-04-05 15:02:14,718 INFO [org.quartz.impl.StdSchedulerFactory] - Quartz scheduler 'DefaultQuartzScheduler' initialized from default resource file in Quartz package: 'quartz.properties'
2012-04-05 15:02:14,718 INFO [org.quartz.impl.StdSchedulerFactory] - Quartz scheduler version: 1.8.6
group1.job1马上启动了--Thu Apr 05 15:02:20 CST 2012
2012-04-05 15:02:14,812 INFO [org.quartz.core.QuartzScheduler] - Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.
123
Hello World! - Thu Apr 05 15:02:20 CST 2012
123
Hello World! - Thu Apr 05 15:02:30 CST 2012
123
Hello World! - Thu Apr 05 15:02:40 CST 2012
123
Hello World! - Thu Apr 05 15:02:50 CST 2012
123
Hello World! - Thu Apr 05 15:03:00 CST 2012
123
Hello World! - Thu Apr 05 15:03:10 CST 2012
123
Hello World! - Thu Apr 05 15:03:20 CST 2012
123
Hello World! - Thu Apr 05 15:03:30 CST 2012
123
Hello World! - Thu Apr 05 15:03:40 CST 2012
123
Hello World! - Thu Apr 05 15:03:50 CST 2012
123
Hello World! - Thu Apr 05 15:04:00 CST 2012
123
Hello World! - Thu Apr 05 15:04:10 CST 2012
123
Hello World! - Thu Apr 05 15:04:20 CST 2012
123
Hello World! - Thu Apr 05 15:04:30 CST 2012
发现JOB任务每次都会初始化,注意咯!