# 运行一个简单的应用
现在您已经下载并安装了Quartz,是时候启动并运行一个示例应用程序了。以下代码获取调度程序的实例,启动它,然后关闭它:
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory;
import static org.quartz.JobBuilder.*;
import static org.quartz.TriggerBuilder.*;
import static org.quartz.SimpleScheduleBuilder.*;
public class QuartzTest {
public static void main(String[] args) {
try {
//从工厂中获取调度程序实例
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
//并且开启关闭它
scheduler.start();
scheduler.shutdown();
} catch (SchedulerException se) {
se.printStackTrace();
}
}
}
注意:所有引入的包都来自于刚刚下载的文件,如果提示无法引入,请检查是否正确导入相关文件到项目的根目录下。
解析:使用StdSchedulerFactory.getDefaultScheduler()获取调度程序后,由于生成了活动线程,应用程序不会终止,直到调用scheduler.shutdown()。
如果您尚未设置日志记录,则所有日志都将发送到控制台,您的输出将如下所示:
[INFO] 21 Jan 08:46:27.857 AM main [org.quartz.core.QuartzScheduler]
Quartz Scheduler v.2.0.0-SNAPSHOT created.
[INFO] 21 Jan 08:46:27.859 AM main [org.quartz.simpl.RAMJobStore]
RAMJobStore initialized.
[INFO] 21 Jan 08:46:27.865 AM main [org.quartz.core.QuartzScheduler]
Scheduler meta-data: Quartz Scheduler (v2.0.0) 'Scheduler' with instanceId 'NON_CLUSTERED'
Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
NOT STARTED.
Currently in standby mode.
Number of jobs executed: 0
Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 50 threads.
Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.
[INFO] 21 Jan 08:46:27.865 AM main [org.quartz.impl.StdSchedulerFactory]
Quartz scheduler 'Scheduler' initialized from default resource file in Quartz package: 'quartz.properties'
[INFO] 21 Jan 08:46:27.866 AM main [org.quartz.impl.StdSchedulerFactory]
Quartz scheduler version: 2.0.0
[INFO] 21 Jan 08:46:27.866 AM main [org.quartz.core.QuartzScheduler]
Scheduler Scheduler_$_NON_CLUSTERED started.
[INFO] 21 Jan 08:46:27.866 AM main [org.quartz.core.QuartzScheduler]
Scheduler Scheduler_$_NON_CLUSTERED shutting down.
[INFO] 21 Jan 08:46:27.866 AM main [org.quartz.core.QuartzScheduler]
Scheduler Scheduler_$_NON_CLUSTERED paused.
[INFO] 21 Jan 08:46:27.867 AM main [org.quartz.core.QuartzScheduler]
Scheduler Scheduler_$_NON_CLUSTERED shutdown complete.
要做一些有意思的事情,需要在scheduler.start()
和scheduler.shutdown()
调用之间编写代码。
//定义作业对象并将它与我们的HelloJob.class绑定
JobDetail job = newJob(HelloJob.class)
.withIdentity("job1", "group1")
.build();
//触发器触发该作业去运行,且每40秒重复一次
Trigger trigger = newTrigger()
.withIdentity("trigger1", "group1")
.startNow()
.withSchedule(simpleSchedule()
.withIntervalInSeconds(40)
.repeatForever())
.build();
//通知quartz使用我们定义的触发器将该作业并入运行进程
scheduler.scheduleJob(job, trigger);
在调用scheduler.shutdown()
之前,您还需要留出一些时间来触发和执行作业 - 对于这样的简单示例,您可能只需要添加Thread.sleep(60000)调用。
现在去试试吧!
可以将40变为4,这样你将在60秒内每4秒看到控制台输出有关quartz正在运行上述作业的一些输出。
以下是Quartz运行成功后的控制台输出效果:
[main] INFO org.quartz.impl.StdSchedulerFactory - Quartz scheduler 'DefaultQuartzScheduler' initialized from default resource file in Quartz package: 'quartz.properties'
[main] INFO org.quartz.impl.StdSchedulerFactory - Quartz scheduler version: 2.3.0
[main] INFO org.quartz.core.QuartzScheduler - Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.
[DefaultQuartzScheduler_Worker-1] INFO org.quartz.examples.example1.HelloJob - Hello World! - Sun Nov 20 14:55:03 CST 2022
[DefaultQuartzScheduler_Worker-2] INFO org.quartz.examples.example1.HelloJob - Hello World! - Sun Nov 20 14:55:07 CST 2022
[DefaultQuartzScheduler_Worker-3] INFO org.quartz.examples.example1.HelloJob - Hello World! - Sun Nov 20 14:55:11 CST 2022
← 2.配置 1.使用Quartz →

微信公众号

QQ交流群
原创网站开发,偏差难以避免。
如若发现错误,诚心感谢反馈。
愿你倾心相念,愿你学有所成。
愿你朝华相顾,愿你前程似锦。
如若发现错误,诚心感谢反馈。
愿你倾心相念,愿你学有所成。
愿你朝华相顾,愿你前程似锦。