文章基于Quartz 2.2.1
定义一个需要执行的job
public class HelloJob implements Job {
@Override
public void execute(JobExecutionContext context)
throws JobExecutionException {
JobDetail detail = context.getJobDetail();
String name = detail.getJobDataMap().getString("name");
int age = detail.getJobDataMap().getInt("age");
System.out.println("**********hello " + name + ",age=" + age
+ ",time = "
+ new SimpleDateFormat("HH:mm:ss").format(new Date()));
}
}
定义一个测试类,导入静态内部类的时候eclipse不提示类的导入,可以自己手工导入,也可以在newTrigger()前加上TriggerBuilder.
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.TriggerBuilder.newTrigger;
public class QuartzTest {
public static void main(String[] args) throws SchedulerException,
InterruptedException {
// 创建scheduler
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.start();
//定义job并且指向HelloJob
JobDetail job = JobBuilder.newJob(HelloJob.class)
.withIdentity("job1", "group1").usingJobData("name", "quartz").usingJobData("age", 11) // 定义属性
.build();
//触发job执行,并且每一秒重复执行一次
Trigger trigger = newTrigger()
.withIdentity("trigger1", "group1")
.startNow()
.withSchedule(
simpleSchedule().withIntervalInSeconds(1)
.repeatForever()).build();
scheduler.scheduleJob(job, trigger);
//运行10秒后关闭
Thread.sleep(10000);
scheduler.shutdown();
}
}