api調用demo1
package cn.xiniu.quartz;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory;
/**
* @ClassName: Demo1
* @Description 請描述下該類是做什麼的
* @Author feizhou
* @Date 2020/6/7 0007 下午 12:35
* @Verson 1.0
**/
public class Demo1 {
public static void main(String[] args) {
try {
// 獲取scheduler實例對象
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
// 開始
scheduler.start();
// 結束
scheduler.shutdown();
} catch (SchedulerException se) {
se.printStackTrace();
}
}
}
api調用demo2
/**
* @ClassName: Demo1
* @Description 請描述下該類是做什麼的
* @Author feizhou
* @Date 2020/6/7 0007 下午 12:35
* @Verson 1.0
**/
public class Demo2 {
//scheduler實例化後,可以啓動(start)、暫停(stand-by)、停止(shutdown)。
//注意:
//scheduler被停止後,除非重新實例化,否則不能重新啓動;
//只有當scheduler啓動後,trigger纔會被觸發(job纔會被執行)。//處於暫停狀態不會被觸發
public static void main(String[] args) throws SchedulerException {
//獲取工廠
SchedulerFactory schedFact = new StdSchedulerFactory();
//獲取Scheduler實例
Scheduler sched = schedFact.getScheduler();
//開始
sched.start();
// 定義job
JobDetail job1 = newJob(HelloJob.class)
.withIdentity("myJob", "group1")
.build();
// 定義觸發器
Trigger job1Trigger = newTrigger()
.withIdentity("myTrigger", "group1")
.startNow()
.withSchedule(simpleSchedule()
//間隔時間
.withIntervalInSeconds(1)
.repeatForever())
.build();
//執行job,使用的trigger觸發器
sched.scheduleJob(job1, job1Trigger);
}
}
---------------
/**
* @ClassName: HelloJob
* @Description 請描述下該類是做什麼的
* @Author feizhou
* @Date 2020/6/7 0007 下午 12:56
* @Verson 1.0
**/
public class HelloJob implements Job {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
System.out.println("時間:"+new Date().getSeconds() +"--->HelloJob");
}
}
-----------
輸出:
時間:50--->HelloJob
時間:51--->HelloJob
時間:52--->HelloJob
時間:53--->HelloJob
時間:54--->HelloJob
時間:55--->HelloJob
JobDataMap:job實例增加屬性或配置
package cn.xiniu.quartz;
import cn.xiniu.quartz.jobs.HelloJob;
import cn.xiniu.quartz.jobs.HelloJob2;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.TriggerBuilder.newTrigger;
/**
* @ClassName: Demo1
* @Description 請描述下該類是做什麼的
* @Author feizhou
* @Date 2020/6/7 0007 下午 12:35
* @Verson 1.0
**/
public class Demo3 {
//scheduler實例化後,可以啓動(start)、暫停(stand-by)、停止(shutdown)。
//注意:
//scheduler被停止後,除非重新實例化,否則不能重新啓動;
//只有當scheduler啓動後,trigger纔會被觸發(job纔會被執行)。//處於暫停狀態不會被觸發
public static void main(String[] args) throws SchedulerException {
//獲取工廠
SchedulerFactory schedFact = new StdSchedulerFactory();
//獲取Scheduler實例
Scheduler sched = schedFact.getScheduler();
//開始
sched.start();
// 定義job
JobDetail job1 = newJob(HelloJob2.class)
.withIdentity("myJob", "group1")
//JobDataMap:job實例增加屬性或配置
.usingJobData("key1", "你好")
.usingJobData("key2", "我好")
.build();
// 定義觸發器
Trigger job1Trigger = newTrigger()
.withIdentity("myTrigger", "group1")
.startNow()
.withSchedule(simpleSchedule()
//間隔時間
.withIntervalInSeconds(1)
.repeatForever())
.build();
//執行job,使用的trigger觸發器
sched.scheduleJob(job1, job1Trigger);
}
}
-------------
package cn.xiniu.quartz.jobs;
import org.quartz.*;
import java.util.Date;
/**
* @ClassName: HelloJob
* @Description 請描述下該類是做什麼的
* @Author feizhou
* @Date 2020/6/7 0007 下午 12:56
* @Verson 1.0
**/
public class HelloJob2 implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
JobKey key = context.getJobDetail().getKey();
JobDataMap dataMap = context.getJobDetail().getJobDataMap();
String v1 = dataMap.getString("key1");
String v2 = dataMap.getString("key2");
System.err.println("key--> " + key );
System.err.println("key1--> " + v1 );
System.err.println("key2--> " + v2 );
System.out.println("時間:"+new Date().getSeconds() +"--->HelloJob");
}
}
-------------
輸出
key--> group1.myJob
key1--> 你好
key2--> 我好
時間:12--->HelloJob
key--> group1.myJob
key1--> 你好
key2--> 我好
時間:13--->HelloJob
key--> group1.myJob
key1--> 你好
key2--> 我好
時間:14--->HelloJob
key--> group1.myJob
key1--> 你好
key2--> 我好
Process finished with exit code -1
Simple Trigger
package cn.xiniu.quartz;
import cn.xiniu.quartz.jobs.HelloJob2;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import java.util.Date;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.TriggerBuilder.newTrigger;
/**
* @ClassName: Demo1
* @Description 請描述下該類是做什麼的
* @Author feizhou
* @Date 2020/6/7 0007 下午 12:35
* @Verson 1.0
**/
public class Demo4 {
//scheduler實例化後,可以啓動(start)、暫停(stand-by)、停止(shutdown)。
//注意:
//scheduler被停止後,除非重新實例化,否則不能重新啓動;
//只有當scheduler啓動後,trigger纔會被觸發(job纔會被執行)。//處於暫停狀態不會被觸發
public static void main(String[] args) throws SchedulerException {
//獲取工廠
SchedulerFactory schedFact = new StdSchedulerFactory();
//獲取Scheduler實例
Scheduler sched = schedFact.getScheduler();
//開始
sched.start();
// 定義job
JobDetail job1 = newJob(HelloJob2.class)
.withIdentity("myJob", "group1")
//JobDataMap:job實例增加屬性或配置
.usingJobData("key1", "你好")
.usingJobData("key2", "我好")
.build();
// 定義觸發器
Trigger job1Trigger = newTrigger()
.withIdentity("myTrigger", "group1")
//15秒後執行
.startAt(DateBuilder.futureDate(15, DateBuilder.IntervalUnit.SECOND))
//開始20秒後結束
.endAt(DateBuilder.futureDate(25, DateBuilder.IntervalUnit.SECOND))
.withSchedule(simpleSchedule()
//間隔1秒
.withIntervalInSeconds(1)
//重複無窮次數
//.repeatForever()
//重複10次
.withRepeatCount(10))
.build();
//執行job,使用的trigger觸發器
sched.scheduleJob(job1, job1Trigger);
}
}
CronTrigger
package cn.xiniu.quartz;
import cn.xiniu.quartz.jobs.HelloJob2;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import static org.quartz.CronScheduleBuilder.cronSchedule;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.TriggerBuilder.newTrigger;
/**
* @ClassName: Demo1
* @Description 請描述下該類是做什麼的
* @Author feizhou
* @Date 2020/6/7 0007 下午 12:35
* @Verson 1.0
**/
public class Demo5 {
//scheduler實例化後,可以啓動(start)、暫停(stand-by)、停止(shutdown)。
//注意:
//scheduler被停止後,除非重新實例化,否則不能重新啓動;
//只有當scheduler啓動後,trigger纔會被觸發(job纔會被執行)。//處於暫停狀態不會被觸發
public static void main(String[] args) throws SchedulerException {
//獲取工廠
SchedulerFactory schedFact = new StdSchedulerFactory();
//獲取Scheduler實例
Scheduler sched = schedFact.getScheduler();
//開始
sched.start();
// 定義job
JobDetail job1 = newJob(HelloJob2.class)
.withIdentity("myJob", "group1")
//JobDataMap:job實例增加屬性或配置
.usingJobData("key1", "你好")
.usingJobData("key2", "我好")
.build();
// 定義觸發器
Trigger job1Trigger = newTrigger()
.withIdentity("myTrigger", "group1")
.withSchedule(cronSchedule("0/2 59 15 * * ?"))
.build();
//執行job,使用的trigger觸發器
sched.scheduleJob(job1, job1Trigger);
}
}