//从调度程序工厂获取一个调度程序的实例
Scheduler scheduler = null;
try {
scheduler = StdSchedulerFactory.getDefaultScheduler();
//显示调度程序的名称(这里会展示我们在quartz.properties文件中的名称)
System.out.println("scheduleName = " + scheduler.getSchedulerName());
/** 重要:
* 定义一个job,并绑定到我们自定义的HelloJob的class对象
* 这里并不会马上创建一个HelloJob实例,实例创建是在scheduler安排任务触发执行时创建的
* 这种机制也为后面使用Spring集成提供了便利
*/
String jobName="TestJob";
String groupName="JobGroup";
JobDetail job = JobBuilder.newJob(TestJob.class)
.withIdentity(jobName, groupName)
.build();
// 声明一个触发器,现在就执行(schedule.start()方法开始调用的时候执行);并且每间隔2秒就执行一次
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger", groupName)
.startNow()
.withSchedule(simpleSchedule()
.withIntervalInSeconds(2)
.repeatForever())
.build();
String cron="1/10 * 15 * * ?";//在每天的15点,从1秒开始每隔10秒执行一次
// 基于表达式构建触发器
CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(cron);
CronTrigger cronTrigger=TriggerBuilder.newTrigger().withIdentity(jobName,groupName).withSchedule(cronScheduleBuilder).build();
// 告诉quartz使用定义的触发器trigger安排执行任务job
// scheduler.scheduleJob(job, trigger);
scheduler.scheduleJob(job, cronTrigger);
//启动任务调度程序,内部机制是线程的启动
scheduler.start();
} catch (SchedulerException e) {
e.printStackTrace();
}
//实现Job接口,任务执行是打印时间
public class TestJob implements Job {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("TestJob execute___now Time :"+sdf.format(new Date()));
}
}