作者 lkmc2

Initial commit

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