转载:http://hi.baidu.com/xulin_1027/item/5ae34598568fb388581461f5
org.quartz.Scheduler 类层次
作为一个 Quartz 用户,你要与实现了 org.quartz.Scheduler 接口的类交互。在你调用它的任何 API 之前,你需要知道如何创建一个 Scheduler 的实例。取而代之的是用了某个工厂方法来确保了构造出 Sheduler 实例并正确的得到初始化,Quartz 框架为这一目的提供了 org.quartz.SchedulerFactory 接口。角色 SchedulerFactory 就是用来产生 Scheduler 实例的。
当 Scheduler 实例被创建之后,就会存到一个仓库中(org.quartz.impl.SchedulerRepository),这个仓库还提供了通过一个 class loader 查询实例的机制。要使用 Scheduler 实例,客户端必须从工厂(和随同的仓库中)使用不同方法调用来获取到它们。换句话说,要通过工厂创建一个 Scheduler 实例并获取到它需要经由两次方法调用。
所有的 Scheduler 实例应该由 SchedulerFactory 来创建
使用 DirectSchedulerFactory 构造实例方法代码如下:
DirectSchedulerFactory factory=DirectSchedulerFactory.getInstance(); try { // Initialize the Scheduler Factory with 10 threads factory.createVolatileScheduler(10); // Get a scheduler from the factory Scheduler scheduler = factory.getScheduler();
方法 createVolatileScheduler() 方法不会返回 scheduler 的实例。createXXX() 方法是告诉工厂如何配置要创建的 Scheduler 实例。你必须调用方法 getScheduler() 获取到在工厂上执行方法 createXXX() 产生的实例。实际上,在调用 getScheduler() 方法之前,你必须调用其中一个 createXXX() 方法;否则,你将有收到一个 SchedulerException 错误,因为根本没有 Scheduler 实例存在。
方法 createVolatileScheduler() 带有单个参数:要创建的线程数量。
使用 StdSchedulerFactory 构造一个调度器实例,具体使用方法如下:
StdSchedulerFactory factory = new StdSchedulerFactory(); // Create the properties to configure the factory Properties props = new Properties(); // required to supply threadpool class and num of threads props.put(StdSchedulerFactory.PROP_THREAD_POOL_CLASS,"org.quartz.simpl.SimpleThreadPool"); props.put("org.quartz.threadPool.threadCount", "10"); try { // Initialize the factory with properties factory.initialize(props); Scheduler scheduler = factory.getScheduler();
在这个例子中向工厂传递了两个属性,它们分别是实现了 org.quartz.spi.ThreadPool 接口的类名和 Scheduler 用来处理 Job 的线程的数量。这两个属性是必须的。但是我们也可以这样的得到实例
StdSchedulerFactory factory = new StdSchedulerFactory();
Scheduler scheduler = factory.getScheduler();
因为StdSchedulerFactory工厂类会有个方法initialize()自动去加载一些属性配置,假如你使用无参的initialize() 方法,StdSchedulerFactory会取classpath下找到quartz.properties并加载。默认不配置属性时候会自动加载quartz.properties文件的配置。
使用静态的 getDefaultScheduler() 方法创建 Scheduler
使用 StdSchedulerFactory 来创建 Scheduler 实例的方式很普遍,因此在 StdSchedulerFactory 直接提供了一个方便的静态方法 getDefaultScheduler(),它就是使用前面列出的几个步骤来初始化工厂的。
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
在静态方法 getDefaultScheduler() 方法中调用了空的构造方法。假如之前未调用过任何一个 initialize() 方法,那么无参的 initialize() 方法会被调用。这会开始去按照前面说的顺序加载文件。默认情况下,quartz.properties 会被定位到,并从中加载属性。
Scheduler 的功能
Scheduler除了启动外,Scheduler操作包括查询、设置 Scheduler 为 standby 模式、继续、停止。启动Scheduler非常简单,只需要调用 start() 方法即可。只有在Scheduler 有实例或standby 模式才能调用start() 方法,一旦调用shutdown() 方法之后就不能在调用start() 方法。
设置 Scheduler 为 standby 模式会导致 Scheduler 暂时停止查找 Job 去执行,public void standby() throws SchedulerException; standby 模式,Scheduler 不再试图去执行 Job,因为那些搜寻要执行的 Job 的线程被暂停了下来。停止则调用无参的 shutdown() 方法相当于调用 shutdown(false).
相关推荐
quartz 定时任务调度支持cron表达式,mvc版本,支持插件部署
spring整合quartz定时任务调度..........
Quartz.net作业调度自定义定时执行任务多任务执行c#,定时执行任务,如超时取消订单,自动确认收货等等
Java使用quartz实现任务调度定时任务
基于web开发的quartz定时任务调度整合配置源码....
quartz.net+TopShelf
定时任务quartz实现分组串行并行动态配置
Spring Quartz 定时调度任务,带中文注解与jar文件,导入项目即可直接运行。
Spring中集成的一个定时任务调度器,以备以后使用
springmvc中实现quartz定时任务(每分钟的第3秒执行任务调度方法)文章支持jar包
Quartz任务调度器与spring整合,做项目的时候常听测试说谁在起着quartz,也不知道是啥,问了下同事,就是定时去执行某些任务的,刚好bug比较少,学习了一下~
Quartz--JAVA定时任务\Java应用:Java调度任务和Spring Quartz (1)
使用Quartz调度任务,根据需要人为的终止某个任务,适用于很多常见的场景
quartz实现定时任务业务调度,包括doc,以及相关的jar包等
2、定时任务(xxl-job)(XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。) 3、SpringCloudSchedule定时任务(使用...
SpringBoot整合Quartz任务定时调度,可以参考我的博客进行学习https://blog.csdn.net/sujin_/article/details/80615823
该jar是使用分布式定时任务或者quartz任务调度框架技术所需的jar包
Quartz.net做为任务调度核心,利用Log4Net做为日志输出,C#完成WINDOWS服务在后台定时执行任务;