作者 lkmc2

Initial commit

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<annotationProcessing>
<profile name="Maven default annotation processors profile" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<module name="QuartzTest" />
</profile>
</annotationProcessing>
</component>
</project>
\ No newline at end of file
... ...
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_10" project-jdk-name="10" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>
\ No newline at end of file
... ...
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
</item>
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
<preferred-size width="-1" height="20" />
</default-constraints>
</item>
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
</item>
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
</item>
</group>
</component>
</project>
\ No newline at end of file
... ...
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4" />
\ No newline at end of file
... ...
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lin</groupId>
<artifactId>quartz_test</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.11.0</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
... ...
package test1;
import org.quartz.*;
import java.util.Date;
public class HelloQuartz implements Job {
public void execute(JobExecutionContext context) throws JobExecutionException {
JobKey jobKey = context.getJobDetail().getKey();
System.out.println("jobName = " + jobKey.getName() + ", jobGroup = " + jobKey.getGroup());
TriggerKey triggerKey = context.getTrigger().getKey();
System.out.println("triggerName = " + triggerKey.getName() + ", triggerGroup = " + triggerKey.getGroup());
JobDetail detail = context.getJobDetail();
String name = detail.getJobDataMap().getString("name");
System.out.println("job detail message is " + name + " at " + new Date());
Trigger trigger = context.getTrigger();
float never = trigger.getJobDataMap().getInt("never");
System.out.println("trigger message is " + never + " at " + new Date());
// 获取将jobDetail和Trigger中JobDataMap()合并后的JobDataMap(),
// 如有重复,trigger中的key会覆盖掉jobDetail中的key
JobDataMap mergedJobDataMap = context.getMergedJobDataMap();
String name1 = mergedJobDataMap.getString("name");
int never1 = mergedJobDataMap.getInt("never");
System.out.println("mergedJobDataMap message is " + name1 + ", " + never1);
}
}
\ No newline at end of file
... ...
package test1;
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.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.TriggerBuilder.newTrigger;
public class QuartzTest {
public static void main(String[] args) throws SchedulerException {
try {
//创建scheduler
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
//定义一个JobDetail
JobDetail job = newJob(HelloQuartz.class) //定义Job类为HelloQuartz类,这是真正的执行逻辑所在
.withIdentity("job1", "group1") //定义name/group
.usingJobData("name", "quartz") //定义属性
.build();
System.out.println("JobDetail name=" + job.getKey().getName()); // job的名字
System.out.println("JobDetail group=" + job.getKey().getGroup()); // job的组
System.out.println("JobDetail jobClass=" + job.getJobClass().getName()); // job的类
//定义一个Trigger
Trigger trigger = newTrigger()
.withIdentity("trigger1", "group1") //定义name/group
.usingJobData("never", 13) //定义属性
.startNow()//一旦加入scheduler,立即生效
.withSchedule(simpleSchedule() //使用SimpleTrigger
.withIntervalInSeconds(1) //每隔一秒执行一次
.repeatForever()) //一直执行,奔腾到老不停歇
.build();
//加入这个调度
scheduler.scheduleJob(job, trigger);
//启动之
scheduler.start();
//运行一段时间后关闭
Thread.sleep(10000);
scheduler.shutdown(true);
} catch (Exception e) {
e.printStackTrace();
}
}
}
... ...
package test2;
import org.quartz.*;
import java.util.Date;
public class HelloQuartz2 implements Job {
// 通过给变量设置getter和setter,可以自动获取jobDetail和trigger中JobDataMap()中的内容
private String name;
private Integer never;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getNever() {
return never;
}
public void setNever(Integer never) {
this.never = never;
}
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("job detail message is " + name + " at " + new Date());
System.out.println("trigger message is " + never + " at " + new Date());
}
}
\ No newline at end of file
... ...
package test2;
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.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.TriggerBuilder.newTrigger;
public class QuartzTest2 {
public static void main(String[] args) throws SchedulerException {
try {
//创建scheduler
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
//定义一个JobDetail
JobDetail job = newJob(HelloQuartz2.class) //定义Job类为HelloQuartz类,这是真正的执行逻辑所在
.withIdentity("job1", "group1") //定义name/group
.usingJobData("name", "quartz") //定义属性
.build();
System.out.println("JobDetail name=" + job.getKey().getName()); // job的名字
System.out.println("JobDetail group=" + job.getKey().getGroup()); // job的组
System.out.println("JobDetail jobClass=" + job.getJobClass().getName()); // job的类
//定义一个Trigger
Trigger trigger = newTrigger()
.withIdentity("trigger1", "group1") //定义name/group
.usingJobData("never", 13) //定义属性
.startNow()//一旦加入scheduler,立即生效
.withSchedule(simpleSchedule() //使用SimpleTrigger
.withIntervalInSeconds(1) //每隔一秒执行一次
.repeatForever()) //一直执行,奔腾到老不停歇
.build();
//加入这个调度
scheduler.scheduleJob(job, trigger);
//启动之
scheduler.start();
//运行一段时间后关闭
Thread.sleep(10000);
scheduler.shutdown(true);
} catch (Exception e) {
e.printStackTrace();
}
}
}
... ...
package test3;
import org.quartz.*;
import java.text.SimpleDateFormat;
import java.util.Date;
public class HelloQuartz3 implements Job {
public void execute(JobExecutionContext context) throws JobExecutionException {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = dateFormat.format(new Date());
System.out.println("now is " + dateStr);
Trigger trigger = context.getTrigger();
System.out.println("Start Time is " + trigger.getStartTime());
System.out.println("End Time is " + trigger.getEndTime());
JobKey jobKey = trigger.getJobKey();
System.out.println("JobKey info jobName:" + jobKey.getName() + ",jobGroup:" + jobKey.getGroup());
}
}
\ No newline at end of file
... ...
package test3;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;
import java.text.SimpleDateFormat;
import java.util.Date;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.TriggerBuilder.newTrigger;
public class QuartzTest3 {
public static void main(String[] args) throws SchedulerException {
// 获取当前时间
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("Current Time is: " + dateFormat.format(date));
//定义一个JobDetail
JobDetail job = newJob(HelloQuartz3.class) //定义Job类为HelloQuartz类,这是真正的执行逻辑所在
.withIdentity("job1", "group1") //定义name/group
.build();
// 获取三秒后的时间
date.setTime(date.getTime() + 3000);
// 设置6秒后的时间
Date endDate = new Date();
endDate.setTime(date.getTime() + 3000);
//定义一个Trigger
Trigger trigger = newTrigger()
.withIdentity("trigger1", "group1") //定义name/group
.startAt(date)// 设置三秒后启动
.endAt(endDate) // 设置6秒后结束
.withSchedule(simpleSchedule() //使用SimpleTrigger
.withIntervalInSeconds(2) //每隔2秒执行一次
.repeatForever()) //一直执行,奔腾到老不停歇
.build();
//创建scheduler
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
//加入这个调度
scheduler.scheduleJob(job, trigger);
//启动之
scheduler.start();
}
}
... ...
package test4;
import org.quartz.*;
import java.text.SimpleDateFormat;
import java.util.Date;
public class HelloQuartz4 implements Job {
public void execute(JobExecutionContext context) throws JobExecutionException {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = dateFormat.format(new Date());
System.out.println("now is " + dateStr);
}
}
\ No newline at end of file
... ...
package test4;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class NeverJob4 implements Job {
public void execute(JobExecutionContext context) throws JobExecutionException {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = dateFormat.format(new Date());
System.out.println("I am never, now is " + dateStr);
}
}
\ No newline at end of file
... ...
package test4;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import java.text.SimpleDateFormat;
import java.util.Date;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.TriggerBuilder.newTrigger;
public class QuartzTest4 {
// 使用simpleSchedule的例子
public static void main(String[] args) throws SchedulerException {
// 获取当前时间
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("Current Time is: " + dateFormat.format(date));
//定义一个JobDetail
JobDetail job = newJob(HelloQuartz4.class) //定义Job类为HelloQuartz类,这是真正的执行逻辑所在
.withIdentity("job1", "group1") //定义name/group
.build();
// 获取4秒后的时间
date.setTime(date.getTime() + 4000);
// 获取4 + 6后的时间
Date endDate = new Date();
endDate.setTime(endDate.getTime() + 6000);
//(距离当前时间4秒后执行且仅执行一次任务)定义一个Trigger
SimpleTrigger trigger = (SimpleTrigger) newTrigger()
.withIdentity("trigger1", "group1") //定义name/group
.startAt(date)
.build();
//定义一个JobDetail
JobDetail job2 = newJob(ShowJob4.class) //定义Job类为HelloQuartz类,这是真正的执行逻辑所在
.withIdentity("show1", "group1") //定义name/group
.build();
//(距离当前时间4秒后首次执行,之后每隔2秒执行一次任务,重复5次
SimpleTrigger trigger2 = (SimpleTrigger) newTrigger()
.withIdentity("trigger2", "group1") //定义name/group
.startAt(date)
.withSchedule(
simpleSchedule()
.withIntervalInSeconds(2)
.withRepeatCount(5)
).build();
//定义一个JobDetail
JobDetail job3 = newJob(NeverJob4.class) //定义Job类为HelloQuartz类,这是真正的执行逻辑所在
.withIdentity("never3", "group1") //定义name/group
.build();
//(距离当前时间4秒后首次执行,之后每隔2秒执行一次任务,重复5次
SimpleTrigger trigger3 = (SimpleTrigger) newTrigger()
.withIdentity("trigger3", "group1") //定义name/group
.startAt(date) // 开始时间
.endAt(endDate) // 结束时间(结束时间优先于withRepeatCount,时间结束则不再重复)
.withSchedule(
simpleSchedule()
.withIntervalInSeconds(2)
.withRepeatCount(5)
).build();
//创建scheduler
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
//加入这个调度(可以设置多次调度器)
scheduler.scheduleJob(job, trigger);
scheduler.scheduleJob(job2, trigger2);
scheduler.scheduleJob(job3, trigger3);
//启动之
scheduler.start();
}
}
... ...
package test4;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ShowJob4 implements Job {
public void execute(JobExecutionContext context) throws JobExecutionException {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = dateFormat.format(new Date());
System.out.println("I am show, now is " + dateStr);
}
}
\ No newline at end of file
... ...
package test5;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import static org.quartz.CronScheduleBuilder.cronSchedule;
public class CronTriggerTest5 {
public static void main(String[] args) throws SchedulerException {
JobDetail jobDetail = JobBuilder
.newJob(MyJob.class)
.withIdentity("myJob").build();
// CronTrigger是基于日历的作业调度器,不像SimpleTrigger那样精确指定间隔时间,比SimpleTrigger更常用
// 比方说指定5月1日执行,或者每周三下午三点执行
// Cron表达式(在Linux上定时调度使用)
// 用于配置CronTrigger实例
// 由7个子表达式组成的字符串,描述了时间表的详细信息,格式:[秒] [分] [小时] [日] [月] [周] [年]
// * 号表示每,比方说每分、每秒、每小时;?号表示忽略
CronTrigger trigger = TriggerBuilder.newTrigger()
.withIdentity("myTrigger", "group1")
// 每分每秒每小时每日每月每年都执行
.withSchedule(cronSchedule("* * * * * ? *"))
.build();
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.scheduleJob(jobDetail, trigger);
scheduler.start();
// Cron表达式举例(年份可省略)
// * 号表示每,比方说每分、每秒、每小时;?号表示忽略(不关心);
// / 号表示每隔, 5/15 表示从第五秒开始,每隔15秒触发;
// - 号表示连接,比方说表示周一到周五; # 表示第,#3表示第三周;
// , 可以同时指定多个值 MON,WED.FRI 表示周一、周三、周五都可以
// W表示最近的工作日, 15W表示里15号最近的工作日
// 格式:[秒] [分] [小时] [日] [月] [周] [年]
// 0 15 10 ? * * 每天10点15分触发
// 0 0/5 14 * * ? 每天下午的2点到2点59分(整点开始,每隔5分钟触发)
// 0 15 10 ? * MON-FRI 从周一到周五每天上午的10点15分触发
// 0 15 10 ? * 6#3 每月的第三周的星期五开始触发(6表示星期五,1是星期日,#3表示第三周)
// 0 15 10 ? * 6L 2016-2017 从2016年到2017年每月最后一周的星期五的10点15分触发,L表示最后一周
}
}
... ...
package test5;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class MyJob implements Job {
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("Now is " + dateFormat.format(new Date()));
System.out.println("Hello World");
}
}
... ...